Классы и объекты. Тема 5

Содержание

Слайд 2

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

Java является объектно-ориентированным языком, поэтому такие понятия как "класс" и

Классы и объекты Java является объектно-ориентированным языком, поэтому такие понятия как "класс"
"объект" играют в нем ключевую роль. Любую программу на Java можно представить как набор взаимодействующих между собой объектов.
Шаблоном или описанием объекта является класс, а объект представляет экземпляр этого класса. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о машине – наличие колес, двигателя, кузова и т.д. Есть некоторый шаблон - этот шаблон можно назвать классом. Реально же существующий автомобиль(фактически экземпляр данного класса) является объектом этого класса.

Слайд 3

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

Класс определяется следующим способом:

Классы и объекты Класс определяется следующим способом:

Слайд 4

Классы и объекты
В данном случае класс называется Person. После названия класса идут

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

Слайд 5

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

Для хранения состояния объекта в классе применяются поля или переменные

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

Слайд 6

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

В классе Person определены два поля: name представляет имя человека,

Классы и объекты В классе Person определены два поля: name представляет имя
а age - его возраст. И также определен метод displayInfo, который ничего не возвращает и просто выводит эти данные на консоль.

Слайд 7

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

Как правило, классы определяются в разных файлах. Класс представляет новый

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

Слайд 8

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

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

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

Слайд 9

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

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

Слайд 10

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

Для создания объекта Person используется выражение new Person(). Оператор new выделяет память

Конструкторы Для создания объекта Person используется выражение new Person(). Оператор new выделяет
для объекта Person. И затем вызывается конструктор по умолчанию, который не принимает никаких параметров. В итоге после выполнения данного выражения в памяти будет выделен участок, где будут храниться все данные объекта Person. Если конструктор не инициализирует значения переменных объекта, то они получают значения по умолчанию. Для переменных числовых типов это число 0, а для типа String и классов - это значение null (то есть фактически отсутствие значения).

Слайд 11

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

Ключевое слово this представляет ссылку на текущий экземпляр класса. Через

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

Слайд 12

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

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

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

Слайд 13

Модификаторы доступа

Все члены класса в языке Java - поля и методы -

Модификаторы доступа Все члены класса в языке Java - поля и методы
имеют модификаторы доступа. В прошлых темах мы уже сталкивались с модификатором public. Модификаторы доступа позволяют задать допустимую область видимости для членов класса, то есть контекст, в котором можно употреблять данную переменную или метод.

Слайд 14

Модификаторы доступа

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

Модификаторы доступа В Java используются следующие модификаторы доступа: public: публичный, общедоступный класс
класса. Поля и методы, объявленные с модификатором public, видны другим классам из текущего пакета и из внешних пакетов.
private: закрытый класс или член класса, противоположность модификатору public. Закрытый класс или член класса доступен только из кода в том же классе.
protected: такой класс или член класса доступен из любого места в текущем классе или пакете или в производных классах, даже если они находятся в других пакетах
Модификатор по умолчанию. Отсутствие модификатора у поля или метода класса предполагает применение к нему модификатора по умолчанию. Такие поля или методы видны всем классам в текущем пакете.

Слайд 15

Перечисления

Проход по всем элементам
Кроме отдельных примитивных типов данных и классов в Java

Перечисления Проход по всем элементам Кроме отдельных примитивных типов данных и классов
есть такой тип как enum или перечисление. Перечисления представляют набор логически связанных констант. Объявление перечисления происходит с помощью оператора enum, после которого идет название перечисления. Затем идет список элементов перечисления через запятую:

Слайд 16

Перечисления

Перечисление фактически представляет новый тип, поэтому мы можем определить переменную данного типа

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

Слайд 17

Методы перечислений

Каждое перечисление имеет статический метод values(). Он возвращает массив всех констант

Методы перечислений Каждое перечисление имеет статический метод values(). Он возвращает массив всех констант перечисления:
перечисления:

Слайд 18

Методы перечислений

Метод ordinal() возвращает порядковый номер определенной константы (нумерация начинается с 0):

Методы перечислений Метод ordinal() возвращает порядковый номер определенной константы (нумерация начинается с 0):

Слайд 19

Конструкторы, поля и методы перечисления

Перечисления, как и обычные классы, могут определять конструкторы,

Конструкторы, поля и методы перечисления Перечисления, как и обычные классы, могут определять
поля и методы. Например:

Слайд 20

Методы

Если переменные и константы хранят некоторые значения, то методы содержат собой набор

Методы Если переменные и константы хранят некоторые значения, то методы содержат собой
операторов, которые выполняют определенные действия.
Общее определение методов выглядит следующим образом:
[модификаторы] тип_возвращаемого_значения название_метода ([параметры]){
    // тело метода
}
Модификаторы и параметры необязательны.

Слайд 21

Методы

Параметры переменной длинны:
Метод может принимать параметры переменной длины одного типа. Например, нам

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

Слайд 22

Методы

Методы могут возвращать некоторое значение. Для этого применяется оператор return.
return возвращаемое_значение;

Методы Методы могут возвращать некоторое значение. Для этого применяется оператор return. return возвращаемое_значение;

Слайд 23

Методы

После оператора return указывается возвращаемое значение, которое является результатом метода. Это может

Методы После оператора return указывается возвращаемое значение, которое является результатом метода. Это
быть литеральное значение, значение переменной или какого-то сложного выражения. В методе в качестве типа возвращаемого значения вместо void используется любой другой тип. В данном случае метод sum возвращает значение типа int, поэтому этот тип указывается перед названием метода. Причем если в качестве возвращаемого типа для метода определен любой другой, отличный от void, то метод обязательно должен использовать оператор return для возвращения значения.
При этом возвращаемое значение всегда должно иметь тот же тип, что значится в определении функции. И если функция возвращает значение типа int, то после оператора return стоит целочисленное значение, которое является объектом типа int. Как в данном случае это сумма значений параметров метода.

Слайд 24

Методы

Метод может использовать несколько вызовов оператора return для возваращения разных значений в

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