- •Лекция №2
- •2.1. Оператор instaceof
- •boolean flag;
- •2.2. Конструкторы
- •свойство
- •свойство конструкторы
- •2.3. Уровни доступа конструкторов
- •class A {
- •Создание объекта singleton-а:
- •2.4. Ключевое слово this
- •class A {
- •2.5. Default конструктор (конструктор с уровнем доступа «пакет»)
- •2.6. Перегрузка методов
- •Замечание. Если перегружаемый метод достался классу от класса предка, то допускается объявление метода
- •2.7. Перекрытие методов
- •class A {
- •2.8. Преобразование типов между классами
- •После восходящего преобразования типов те поля и методы потомка, которые отсутствуют в классе
- •Однако, никакого усечения объекта не происходит, при обратном, нисходящем преобразовании типов, которое
- •Нисходящее преобразование типов может осуществляться от класса предка к классу, который находится в
- •class A {}
- •Замечание. При нисходящем и восходящем преобразованиях типов фактически тип объекта (т.е. класс, экземпляром,
- •О том, что подобные манипуляции с объектами и объектными переменными справедливо называть преобразованием
- •Замечание. Нисходящее преобразование типов всегда должно выполняться явно с использованием оператора преобразования типов.
- •2.9. Влияние уровня доступа конструктора на возможность наследовать класс
- •конструктор
- •конструктор конструкторы
- •2.10.Инициализация нестатических полей
- •class A {
- •В блоках инициализации не допускается использование в правых частях присваиваний неинициализированных полей.
- •Замечание. Присваивание полю значения в блоке инициализации, который предшествует объявлению поля ошибки не
- •Замечание. В блоках инициализации можно инициализировать статические поля, при этом их значения будут
- •2.11. Инициализация статических полей
- •2.12.Порядок вызова блоков инициализации и конструкторов при создании объекта
- •1)вызываются статические блоки инициализации всех классов от предка к потомку (от A до
- •class A {
- •2.13. Значение полей по умолчанию
- •Замечание. Вплоть до первой инициализации поля его значение равно значению по умолчанию начиная
- •Выше объявления поля можно производить его инициализацию в блоках инициализации, но нельзя использовать
- •Замечание. Элементы массивов являющихся в java объектами, можно рассматривать как поля таких объектов,
- •2.14. Абстрактные классы
- •Замечание. Модификатор abstract должен стоять перед ключевым словом class, но может стоять после
- •2.15.Вызов конструкторов в классе
- •Замечание. Из конструктора может быть вызван только один конструктор из оставшихся. Не допускается
- •Замечание. В коде класса можно создавать экземпляры этого класса с помощью оператора new,
- •2.16.Конструктор без параметров
- •class A {
- •2.17. Уровни доступа класса
- •2.18.Обращение к статическим полям и методам
- •2.19. Доступ к переменной this
- •2.20. Перегрузка статических методов при наследовании
- •2.21. Перекрытие статических методов при наследовании
- •2.22. Абстрактные статические методы
- •2.33. Доступ к перекрытым методам родительского класса
- •2.34. Наследование абстрактного класса
- •2.35. Объектные переменные абстрактных классов
- •abstract class A {
- •Замечание. Абстрактные классы могут быть интерпретированы как интерфейсы, у которых часть методов уже
- •2.36. Уровни доступа и перекрытие методов
- •2.37. Уровни доступа элементов классов
- •уровень
- •2.38. Модификатор final
- •Практические задания
- •2. Создать класс "Вектор" для хранения ссылок на объекты.
- •3. Создать класс "Матрица".
уровень
доступа
общедоступный
защищенный
по умолчанию
закрытый
обозна- |
модифи- |
элемент класса |
чение |
катор |
доступен |
public public
protected protected
default отсутствует
private private
1) внутри класса;
2) из любого внешнего кода.
1) внутри класса;
2)из любого внешнего кода пакета;
3)в любом потомке этого класса
1) внутри класса;
2) из любого внешнего кода пакета
только внутри класса
2.38. Модификатор final
Модификатором final может быть помечен класс, метод или поле.
помечаемая с помощью модификатора final сущность
поле
метод
класс
свойство, которое приобретает сущность
1)поле должно быть инициализировано при объявлении
2)значение поля изменить нельзя
(final-поля это константы)
метод нельзя перекрыть в потомке (но можно перегрузить)
класс нельзя наследовать
Практические задания
1. Создать класс "Окружность".
Класс должен иметь следующие поля:
1)x, y - координаты центра окружности;
2)radius - радиус окружности.
Класс должен иметь следующие методы:
1)передвинуть окружность на dx и dy;
2)проверить попадание заданной точки внутрь данной окружности;
3)проверить попадание другой окружности внутрь данной;
4)вывести на экран параметры окружности.
2. Создать класс "Вектор" для хранения ссылок на объекты.
Класс должен иметь следующие поля:
1)массив ссылок, который может расти;
2)количество ссылок в массиве.
Класс должен иметь следующие методы:
1)очистить весь массив;
2)добавить ссылку в массив;
3)Получить j-й элемент;
4)Удалить j-й элемент;
5)вывести значения массива на экран.
3. Создать класс "Матрица".
Класс должен иметь следующие поля:
1)двумерный массив вещественных чисел;
2)количество строк и столбцов в матрице.
Класс должен иметь следующие методы:
1)сложение с другой матрицей;
2)умножение на число;
3)умножение на другую матрицу;
4)транспонирование;
5)вывод на печать.