|
|
|
# Определение класса
|
|
|
|
Класс - пользоватльский тип данных (структура и поведение)
|
|
|
|
Простейшее определение:
|
|
|
|
class A{}
|
|
|
|
|
|
|
|
[спецификатор] class [Name] extends [имя_суперкласса] implements [список_интерфейсов] {
|
|
|
|
члены класса - поля / атрибуты класса (данные) --> экземплярные/статические
|
|
|
|
спецификаторы / модификаторы доступа
|
|
|
|
------------
|
|
|
|
переменные
|
|
|
|
методы
|
|
|
|
конструкторы
|
|
|
|
------------
|
|
|
|
модификатор_доступа спецификатор тип имя = инициализирующее выражение;
|
|
|
|
}
|
|
|
|
|
|
|
|
# Определение метода
|
|
|
|
модификатор_доступа спецификаторы тип_возвращаемого_значения имя_метода (список_формальных_параметров) throws список_исключений {
|
|
|
|
//тело метода
|
|
|
|
}
|
|
|
|
|
|
|
|
# Определение конструктора
|
|
|
|
модификатор_доступа имя_конструктора(список_параметров) throws список исключений {
|
|
|
|
тело конструктора
|
|
|
|
}
|
|
|
|
имя конструктора всегда совпадает с именем класса, пишется с заглавной буквы
|
|
|
|
|
|
|
|
# Спецификатор доступа
|
|
|
|
public - глобальная область, видит вся программа
|
|
|
|
protected - видимость внутри пакета, а также наследникам
|
|
|
|
private - видимость внутри класса (объект видит поля других объектов этого класса)
|
|
|
|
default - видимость внутри пакета
|
|
|
|
local - видимость внутри фигурных скобок
|
|
|
|
|
|
|
|
package - именованная группа пользовательских типов (каталог)
|
|
|
|
Область видисости класса может быть: public, default
|
|
|
|
|
|
|
|
всегда объявляем минимальный необходимый уровень доступа.
|
|
|
|
|
|
|
|
# Создание объекта
|
|
|
|
new - специальная операция
|
|
|
|
- выделение области памяти
|
|
|
|
- инициализация (new дает ссылку на новый объект)
|
|
|
|
|
|
|
|
Способы создания экземпляра класса:
|
|
|
|
* new A(список_аргументов)
|
|
|
|
* this A(список_аргументов)
|
|
|
|
|
|
|
|
## При вызове конструктора
|
|
|
|
- выполняются статические поля и области класса
|
|
|
|
- выполняются экземплярные поля класса
|
|
|
|
- вызывается конструктор родительского класса
|
|
|
|
- вызывается конструктор класса
|
|
|
|
|
|
|
|
Конструктор класса вызывается в последнюю очередь!!!
|
|
|
|
|
|
|
|
## Перегрузка методов и конструкторов
|
|
|
|
При перегрузке конструктора ключевыми моментами оказываются:
|
|
|
|
- количество параметров
|
|
|
|
- типы параметров
|
|
|
|
- последовательность параметров
|
|
|
|
|
|
|
|
Разные конструкторы:
|
|
|
|
* void a(){}
|
|
|
|
* void a(A a){}
|
|
|
|
* void a(A a, B a){}
|
|
|
|
* void a(B a, A a){}
|
|
|
|
|
|
|
|
# Дублирование кода
|
|
|
|
* усложняет проведение изменений
|
|
|
|
* увеличивает объем тестирования
|