You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.7 KiB
73 lines
3.7 KiB
2 years ago
|
# Определение класса
|
||
|
Класс - пользоватльский тип данных (структура и поведение)
|
||
|
Простейшее определение:
|
||
|
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){}
|
||
|
|
||
|
# Дублирование кода
|
||
|
* усложняет проведение изменений
|
||
|
* увеличивает объем тестирования
|