# Определение класса Класс - пользоватльский тип данных (структура и поведение) Простейшее определение: 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){} # Дублирование кода * усложняет проведение изменений * увеличивает объем тестирования