Что такое public class в java

Классы. Объектно-ориентированное программирование

Классы и объекты

Java является объектно-ориентированным языком, поэтому такие понятия как «класс» и «объект» играют в нем ключевую роль. Любую программу на Java можно представить как набор взаимодействующих между собой объектов.

Класс определяется с помощью ключевого слова сlass :

Для хранения состояния объекта в классе применяются поля или переменные класса. Для определения поведения объекта в классе применяются методы. Например, класс Person, который представляет человека, мог бы иметь следующее определение:

Теперь используем данный класс. Для этого определим следующую программу:

Как правило, классы определяются в разных файлах. В данном случае для простоты мы определяем два класса в одном файле. Стоит отметить, что в этом случае только один класс может иметь модификатор public (в данном случае это класс Program), а сам файл кода должен называться по имени этого класса, то есть в данном случае файл должен называться Program.java.

Конструкторы

Если в классе не определено ни одного конструктора, то для этого класса автоматически создается конструктор без параметров.

Выше определенный класс Person не имеет никаких конструкторов. Поэтому для него автоматически создается конструктор по умолчанию, который мы можем использовать для создания объекта Person. В частности, создадим один объект:

В итоге мы увидим на консоли:

Если необходимо, чтобы при создании объекта производилась какая-то логика, например, чтобы поля класса получали какие-то определенные значения, то можно определить в классе свои конструкторы. Например:

Теперь в классе определено три коструктора, каждый из которых принимает различное количество параметров и устанавливает значения полей класса.

Консольный вывод программы:

Ключевое слово this

Ключевое слово this представляет ссылку на текущий экземпляр класса. Через это ключевое слово мы можем обращаться к переменным, методам объекта, а также вызывать его конструкторы. Например:

В третьем конструкторе параметры называются так же, как и поля класса. И чтобы разграничить поля и параметры, применяется ключевое слово this:

Так, в данном случае указываем, что значение параметра name присваивается полю name.

Кроме того, у нас три конструктора, которые выполняют идентичные действия: устанавливают поля name и age. Чтобы избежать повторов, с помощью this можно вызвать один из конструкторов класса и передать для его параметров необходимые значения:

В итоге результат программы будет тот же, что и в предыдущем примере.

Инициализаторы

Кроме конструктора начальную инициализацию объекта вполне можно было проводить с помощью инициализатора объекта. Инициализатор выполняется до любого конструктора. То есть в инициализатор мы можем поместить код, общий для всех конструкторов:

Источник

Что такое public class в java

Класс в java оформляется с помощью следующей конструкции:

Рассмотрим ее составляющие:

public – модификатор доступа к классу, в данном случае он нам говорит, что этот класс будет доступен не только данному классу, но и другим. В java существуют и другие модификаторы, но об этого поговорим позднее.

class – ключевое слово, говорящее о том, что это класс.

Cat – имя класса. Имена классов принято писать с заглавной буквы.

< >– фигурные скобки, между которыми разместится тело нашего класса.

Классы в java состоят из атрибутов и методов, присвоим некоторые и нашему коту.

АТРИБУТЫ КЛАССА CAT.

Атрибутами кота могут быть: имя, вес, окраска. Атрибуты это переменные, которые объявляются следующим образом:

private здесь опять же указывает на права доступа. К переменной, в данном случае, можно обращаться только из ее класса, чтобы классы извне не могли ее изменить.

int, String – это типы данных. В данном случае вес будет задан при помощи целого числа – int, a имя и цвет при помощи символьной строки String.

После объявления каждого атрибута должна ставиться точка с запятой ;

При помощи // в коде программы оформляются комментарии, которые являются правилом хорошего тона.

МЕТОДЫ КЛАССА CAT.

Пусть наш кот умеет есть, спать и разговаривать. Опишем это поведение с помощью методов.

public void eat() – сигнатура метода, его определение. В данном случае она нам говорит о том, что:

eat – имя метода. Имена методов, в отличие от имен классов, принято писать с маленькой буквы. На конце каждого метода после имени всегда идут круглые скобки ( ), пустые или содержащие параметры (об этом позднее).

После сигнатуры метода идут фигурные скобки < >. В них содержится тело метода. Тело нашего метода содержит просто вывод сообщения о том, что кот кушает — "Eating. \n". За вывод текстового сообщения отвечает метод System.out.print("Eating. \n").

\n — символ перевода строки, чтобы при выводе наших сообщений все они не писались в одну строку.

Аналогично предыдущему методу опишем спящего кота:

И немного иначе опишем метод – кот говорит:

В отличие от предыдущих методов этот метод возвращает значение и имеет входные параметры. Давайте подробнее рассмотрим сигнатуру метода public String speak(String words):

public — метод speak() доступен для других классов;

String — тип значения, которое возвращает метод. В предыдущих случаях ключевое слово void указывало на то, что метод ничего не возвращает. В данном случае String указывает на то, что метод возвращает значение типа строка.

Что же это значит? В процессе своей работы метод выполняет определенные действия над данными. Иногда необходимо, чтобы результат этих действий был передан для дальнейшей обработки другим классам, в этом случае метод передает (возвращает) этот результат. Эти возвращаемые данные относятся к какому-либо типу. В нашем примере это тип символьной строки, String.

Возвращающие методы должны содержать в своем теле ключевое слово return, которое указывает на то, что именно возвращает данный метод. В нашем случае это переменная phrase.

speak — имя метода.

(String words) — входные параметры. Входные параметры — это какие-либо данные, которые передаются из других классов и, которые метод должен обработать. Наш метод получает в качестве входных данных строку в виде переменной words, к этой строке дописывает «. mauu. » и возвращает то, что получилось.

В итоге класс Cat выглядит следующим образом:

ОБРАЩЕНИЕ К КЛАССУ.

Далее рассмотрим обращение к классу Cat. И то, как его использовать в работе.

public static void main(String[] args) – сигнатура метода main(). Программа состоит из нескольких классов, но только один из классов может содержать метод main(). Mетод main(), это так называемая точка входа в программу. Без этого метода мы не сможем стартовать программу. Теперь, вместо приветствия миру, этот метод будет содержать код для работы с классом Cat.

Пишем в тело метода main() (между его фигурными скобками) следующие строки:

Разберем подробнее, что это значит.

Прежде чем вызывать созданные нами методы в классе Cat и заставить нашего кота есть, спать и говорить, сперва нужно создать экземпляр класса (инстанцию).

Данная строчка нам говорит о том, что в памяти создан экземпляр объекта Cat, а переменная ourcat типа Cat (такого же, как и наш объект) указывает на то место в памяти, где был этот объект создан.

Переменную ourcat теперь можно использовать для вызова методов класса Cat, например:

Если метод возвращает какое-либо значение, например, как наш метод speak() возвращает значение типа String, то его можно вызывать следующим образом:

Вспомним, что при описании нашего метода он содержал параметры speak(String words). Теперь, при вызове в качестве параметра выступила фраза "Play with me", метод speak() ее обработал и вернул "Play with me. mauu. ". Именно это значение он присвоил переменной say.

Мы это можем проверить, выведя say на печать при помощи команды:

Итак, наш класс HelloWorld теперь выглядит следующим образом:

В качестве результата мы получаем следующие строки:

На этом закончим данный урок, итак, в этом уроке мы:

Источник

Классы, объекты, методы

Java является объектно-ориентированным языком, поэтому такие понятия как «класс» и «объект» играют в нем ключевую роль. Любую программу на Java можно представить как набор взаимодействующих между собой объектов.

Определение класса

Таким образом, в классе Book определены три переменных и один метод Info, который выводит значения этих переменных.

Кроме обычных методов в классах используются также и специальные методы, которые называются конструкторами. Конструкторы нужны для создания нового объекта данного класса и, как правило, выполняют начальную инициализацию объекта. Название конструктора должно совпадать с названием класса :

Класс Book имеет два конструктора. Первый конструктор без параметров присваивает «неопределенные» начальные значения полям. Второй конструктор присваивает полям класса значения, которые передаются через его параметры.

Мы можем определить несколько конструкторов для установки разного количества параметров и затем вызывать один конструктор класса из другого :

Вызов конструктора класса с двумя параметрами производится с помощью ключевого слова this, после которого в скобках указывается список параметров.

Создание объекта

Чтобы непосредственно использовать класс в программе, надо создать его объект. Процесс создания объекта двухступенчатый: вначале объявляется переменная данного класса, а затем с помощью ключевого слова new и конструктора непосредственно создается объект, на который и будет указывать объявленная переменная :

После объявления переменной Book b; эта переменная еще не ссылается ни на какой объект и имеет значение null. Затем создаем непосредственно объект класса Book с помощью одного из конструкторов и ключевого слова new.

Инициализаторы

Кроме конструктора начальную инициализацию полей объекта можно проводить с помощью инициализатора объекта. Так можно заменить конструктор без параметров следующим блоком :

Методы класса

Метод класса в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-либо классу или объекту.

Как и процедура в процедурном программировании, метод состоит из некоторого количества операторов для выполнения определенного действия и может иметь набор входных параметров.

Различают простые методы и статические методы :

Методы предоставляют интерфейс, при помощи которого осуществляется доступ к данным объекта некоторого класса, тем самым, обеспечивая инкапсуляцию данных.

Кроме имени и тела (кода) у метода есть ряд других характеристик:

Модификаторы метода определяют уровень доступа. В зависимости от того, какой уровень доступа предоставляет тот или иной метод, выделяют:

Такое разделение интерфейсов позволяет сохранять неизменным открытый интерфейс, но изменять внутреннюю реализацию.

Для того чтобы создать статический метод, перед его именем надо указать модификатор static. Если этого не сделать, то метод можно будет вызывать только в приложении к конкретному объекту данного класса (будет нестатическим).

Класс может включать метод main, который должен иметь уровень доступа public; к нему обращается виртуальная машина Java, не являющаяся частью какого-либо пакета.

Абстрактный класс, abstract class

Абстрактный класс в объектно-ориентированном программировании — базовый класс, который не предполагает создания экземпляров. Абстрактные классы реализуют на практике один из принципов ООП — полиморфизм. Абстрактный класс может содержать (и не содержать) абстрактные методы. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков. Пример абстрактного класса, включающего две абстрактные функции.

Переопределение метода, Override

В реализации ReleasePrice, наследующего свойства класса Price, «реализуем» абстрактные методы и «переопределяем» метод с использованием аннотации @Override :

Теперь, если в родительском класса Price метод bonusPrice будет удален или переименован, то среда разработки должна выдать соответствующее сообщение. Компилятор также выдаст сообщение об ошибке.

Перегрузка методов, overload

Совокупность имени метода и набора формальных параметров называется сигнатурой метода. Java позволяет создавать несколько методов с одинаковыми именами, но разными сигнатурами. Создание метода с тем же именем, но с другим набором параметров называется перегрузкой. Какой из перегруженных методов должен выполняться при вызове, Java определяет на основе фактических параметров, передаваемых методу.

Пример класса Test с тремя перегруженными методами test :

Пример использования класса Test:

Java рекурсия

Рекурсией называется метод (функция), которая внутри своего тела вызывает сама себя.

Рассмотрим пример рекурсивного метода вычисления факториала. Для того чтобы вычислить n!, достаточно знать и перемножить между собой (n-1)! и n. Создадим метод, реализующий описанный способ.

Указанный рекурсивный метод вычисляет факториал натурального числа.

Рассмотрим пример, вычисляющий через рекурсию n-ое число Фибоначчи. Напомним, как выглядят первые элементы этого ряда: 1 1 2 3 5 8 13 …

Суперкласс Object

В Java есть специальный суперкласс Object и все классы являются его подклассами. Поэтому ссылочная переменная класса Object может ссылаться на объект любого другого класса. Так как массивы являются тоже классами, то переменная класса Object может ссылаться и на любой массив.

У класса Object есть несколько важных методов:

МетодОписание
Object clone()Функция создания нового объекта, не отличающий от клонируемого
boolean equals(Object object)Функция определения равенства текущего объекта другому
void finalize()Процедура завершения работы объекта; вызывается перед удалением неиспользуемого объекта
Class getClass()Функция определения класса объекта во время выполнения
int hashCode()Функция получения хэш-кода объекта
void notify()Процедура возобновления выполнения потока, который ожидает вызывающего объекта
void notifyAll()Процедура возобновления выполнения всех потоков, которые ожидают вызывающего объекта
String toString()Функция возвращает строку описания объекта
void wait()Ожидание другого потока выполнения
void wait(long ms)Ожидание другого потока выполнения
void wait(long ms, int nano)Ожидание другого потока выполнения

Методы getClass(), notify(), notifyAll(), wait() являются «финальными» (final) и их нельзя переопределять.

Проверка принадлежности класса instanceof

Для проверки принадлежности класса какому-либо объекту необходимо использовать ключевого слова instanceof. Иногда требуется проверить, к какому классу принадлежит объект. Это можно сделать при помощи ключевого слова instanceof. Это логический оператор, и выражение foo instanceof Foo истинно, если объект foo принадлежит классу Foo или его наследнику, или реализует интерфейс Foo (или, в общем виде, наследует класс, который реализует интерфейс, который наследует Foo).

Пример с рыбками. Допустим имеется родительский класс Fish и у него есть унаследованные подклассы SaltwaterFish и FreshwaterFish. Необходимо протестировать, относится ли заданный объект к классу или подклассу по имени

Данная проверка удобна во многих случаях. Иногда приходится проверять принадлежность класса при помощи instanceof, чтобы можно было бы разделить логику кода:

Импорт класса import

Оператор import сообщает компилятору Java, где найти классы, на которые ссылается код. Любой сложный объект использует другие объекты для выполнения тех или иных функций, и оператор импорта позволяет сообщить о них компилятору Java. Оператор импорта обычно выглядит так:

За ключевым словом следуют класс, который нужно импортировать. Имя класса должно быть полным, то есть включать свой пакет. Чтобы импортировать все классы из пакета, после имени пакета можно поместить ‘.*;’

IDE Eclipse упрощает импорт. При написании кода в редакторе Eclipse можно ввести имя класса, а затем нажать Ctrl+Shift+O. Eclipse определяет, какие классы нужно импортировать, и добавляет их автоматически. Если Eclipse находит два класса с одним и тем же именем, он выводит диалоговое окно с запросом, какой именно класс вы хотите добавить.

Статический импорт

Существует ещё статический импорт, применяемый для импорта статических членов класса или интерфейса. Например, есть статические методы Math.pow(), Math.sqrt(). Для вычислений сложных формул с использованием математических методов, код становится перегружен. К примеру, вычислим гипотенузу.

В данном случае без указания класса не обойтись, так как методы статические. Чтобы не набирать имена классов, их можно импортировать следующим образом:

После импорта уже нет необходимости указывать имя класса.

Второй допустимый вариант, позволяющий сделать видимыми все статические методы класса:

В этом случае не нужно импортировать отдельные методы. Но данный подход в Android не рекомендуется, так как требует больше памяти.

Источник

Что такое класс в Java

ООП — это то, на чём держится вся разработка на Java. С помощью объектов и классов можно создать любой функционал быстрее.

Что такое public class в java. Смотреть фото Что такое public class в java. Смотреть картинку Что такое public class в java. Картинка про Что такое public class в java. Фото Что такое public class в java

Что такое public class в java. Смотреть фото Что такое public class в java. Смотреть картинку Что такое public class в java. Картинка про Что такое public class в java. Фото Что такое public class в java

Объектно-ориентированное программирование — это подход к разработке приложений с помощью классов и объектов. Он позволяет писать значительно меньше кода и при этом реализовывать больше возможностей, чем при функциональном проектировании программ.

В программе, написанной по принципам ООП, отдельные компоненты рассматриваются как предметы из реального мира, такие как дом, дерево, кот, человек и даже Java-разработчик. У каждого объекта есть свои атрибуты. Вот какими они будут у принтера: цвет, марка, скорость печати, объём оставшейся краски и так далее.

Что такое public class в java. Смотреть фото Что такое public class в java. Смотреть картинку Что такое public class в java. Картинка про Что такое public class в java. Фото Что такое public class в java

Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Также принтеру свойственно определённое «поведение»: печать, сканирование, копирование, проверка наличия краски, подключение к Wi-Fi и так далее — всё это называется методами.

Каждый принтер уникален, поэтому обладает своим идентификатором, по которому к нему можно обратиться, чтобы узнать или изменить тот или иной атрибут, а также вызвать метод:

Однако прописывать все атрибуты и методы для каждого объекта было бы слишком сложно, поэтому используются классы — общий шаблон того, как должен вести себя объект.

Допустим, существует класс Бумага, которому прописываются свои параметры и методы: цвет, цена, размер, толщина и так далее. Каждый отдельный объект является экземпляром класса. Например, можно создать объект листБумаги1, листБумаги2, листБумаги3 — у всех них будут одинаковые атрибуты и поведение, но разные значения:

Эту бумагу можно, например, передать объекту класса Принтер, чтобы её распечатать:

Без объектов нам бы пришлось создавать отдельные функции и работать с ними. Сейчас мы можем написать такой код:

То есть мы создаём объект и даём ему параметры: адрес и размер. Потом отправляем ему текст и лист бумаги, а он печатает это так, как прописано в теле метода.

Без классов нам бы пришлось создавать множество негруппированных переменных, в которых хранилась бы вся эта информация:

Представьте, как раздуется код от количества переменных и функций, которые нужны, чтобы распечатать обычный лист. А ведь нужно написать ещё и функцию заправки, сканирования, копирования и так далее.

Пришлось бы несколько раз дублировать одинаковые фрагменты кода, чтобы написать что-то. А ООП позволяет сократить код, а значит, быстрее разрабатывать программы, а также читать и переписывать их.

Как работают классы в Java

Создавая программу, нужно объявить класс с её именем, а потом добавить метод main — из него начинается работа приложения:

В Java всё, что не является объектом, является классом. Даже System, с помощью которого выводится текст, — это объект.

Можно создать переменные для этого класса — атрибуты:

Эти переменные вызываются из основного метода и умножаются. Вот как выглядит результат таких вычислений:

Что такое public class в java. Смотреть фото Что такое public class в java. Смотреть картинку Что такое public class в java. Картинка про Что такое public class в java. Фото Что такое public class в java

Пока не обращайте внимания на слова public и static — про них мы расскажем позже. Так же можно создавать методы, похожие на main. Для них укажите модификаторы доступа (public и static), возвращаемый тип и название:

Запустив программу, мы увидим результат работы метода GetCube():

Что такое public class в java. Смотреть фото Что такое public class в java. Смотреть картинку Что такое public class в java. Картинка про Что такое public class в java. Фото Что такое public class в java

Пока всё работает в пределах основного класса, но можно создать и другие. Для наглядности мы будем делать это на примере кода мессенджера. Здесь будут использоваться классы Сообщение (Message) и Пользователь (User).

Чтобы начать работать с классами, создайте папку для своего проекта: например, 01. Добавьте в неё ещё два каталога — src и bin. В первом будут храниться исходники, а во втором — скомпилированные файлы.

Теперь скомпилировать файл можно так:

Все классы должны находиться в отдельных файлах. которые нужно объединить в пакет. Его название должно выглядеть так: com.sitename.packagename. Хотя вы можете обойтись и без домена packagename. Чтобы создать пакет, сначала в папке src создайте следующую структуру:

В нашем случае для основного файла путь будет таким:

В тот же каталог поместите User.java и Message.java. После этого в начало каждого файла добавьте такую строчку:

Она означает, что этот код относится к определённому пакету. И чтобы воспользоваться каким-то классом, нужно добавить в начало основной программы несколько команд:

Теперь можно компилировать программу с помощью команды:

Если вы всё сделали правильно, в папке bin появится такая же структура, как в src. Вот код корневого файла приложения:

Теперь этот код можно запустить, прописав такую команду:

Вот что выведет консоль:

Что такое public class в java. Смотреть фото Что такое public class в java. Смотреть картинку Что такое public class в java. Картинка про Что такое public class в java. Фото Что такое public class в java

Но если вы пока не уверены, что хотите продолжать работать на Java, можете поэкспериментировать в консоли.

Как создать класс в Java

Теперь можно приступить к созданию классов. Начнём с пользователя:

Слово public выступает модификатором доступа — он определяет, откуда будет доступен компонент. Для класса можно указать следующие модификаторы:

Теперь в основном файле можно создать объект класса User:

Мы указали для объекта user1 класс User, а после оператора присваивания указали ключевое слово new и запустили конструктор (об этом позже). Вот как будет выполнена программа:

Что такое public class в java. Смотреть фото Что такое public class в java. Смотреть картинку Что такое public class в java. Картинка про Что такое public class в java. Фото Что такое public class в java

Создание объекта называется объявлением экземпляра класса — тут же можно использовать конструктор, чтобы сразу задать значения атрибутам.

Для этого нужно в теле класса создать метод с таким же названием, что и класс. Ему можно передать аргументы, с которыми можно провести операции:

Обратите внимание, что внутри класса атрибуты вызываются с помощью ключевого слова this. Это нужно для того, чтобы компилятор не путался, с какой переменной работать — например, в случае, если у аргумента такое же имя, как и у атрибута:

Теперь, чтобы создать объект, нужно немного поменять код:

Дальше можно создать класс для работы с сообщениями:

Обратите внимание, что в этот раз для атрибутов from и to мы задали модификатор private, а в качестве типа стоит User. Private позволяет закрыть доступ к элементам извне — то есть их можно менять только внутри методов самого класса.

Это позволяет защитить атрибуты от незапланированного доступа. Если же вы хотите получать или менять атрибуты, можно воспользоваться getter и setter. Это специальные методы, которые позволяют обратиться к защищённой переменной:

Теперь можно написать код, который будет создавать сообщение:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *