Содержание
- 2. 2.1. Оператор instaceof Первым операндом бинарного оператора instanceof является объект, вторым – имя класса, интерфейса или
- 3. boolean flag; int[] x = new int[3]; flag = x instanceof Object; // flag = true
- 4. 2.2. Конструкторы Конструкторы классов представляют из себя специальные методы, которые имеют отличия от простых методов классов,
- 7. 2.3. Уровни доступа конструкторов Конструкторы классов могут иметь любой из четырех уровней доступа: public, protected, default
- 8. class A { // статическое поле – закрытый экземпляр класса: private static A instance = null;
- 9. Создание объекта singleton-а: A a = A.getA(); // a – экземпляр класса A A b =
- 10. 2.4. Ключевое слово this Ключевое слово this используется в двух разных случаях: для вызова конструктора класса
- 11. class A { private int x; public A() { // вызов конструктора: this(0); } public A(int
- 12. 2.5. Default конструктор (конструктор с уровнем доступа «пакет») Default конструктор, т.е. конструктор, перед которым не стоит
- 13. 2.6. Перегрузка методов Перегрузить (overload) метод класса – это значит объявить в классе еще один метод
- 14. Замечание. Если перегружаемый метод достался классу от класса предка, то допускается объявление метода с таким же
- 15. 2.7. Перекрытие методов Методы и поля класса предка могут быть перекрыты в классе потомке. При этом
- 16. class A { protected int x; public A() {x = 7;} int getX() {return x;} }
- 17. 2.8. Преобразование типов между классами Между классами, которые находятся в отношении наследования возможно преобразование типов двух
- 18. После восходящего преобразования типов те поля и методы потомка, которые отсутствуют в классе предке становятся не
- 19. Однако, никакого усечения объекта не происходит, при обратном, нисходящем преобразовании типов, которое всегда должно выполняться явно,
- 20. Нисходящее преобразование типов может осуществляться от класса предка к классу, который находится в любом узле иерархии
- 21. class A {} class B extends A {} class C extends B {} ... // c
- 22. Замечание. При нисходящем и восходящем преобразованиях типов фактически тип объекта (т.е. класс, экземпляром, которого он является)
- 23. О том, что подобные манипуляции с объектами и объектными переменными справедливо называть преобразованием типов говорит доступность
- 24. Замечание. Нисходящее преобразование типов всегда должно выполняться явно с использованием оператора преобразования типов. При этом для
- 25. 2.9. Влияние уровня доступа конструктора на возможность наследовать класс Уровень доступа и наличие/отсутствие в классе конструкторов
- 28. 2.10. Инициализация нестатических полей В Java существует три механизма инициализации нестатических полей: 1) присваивание полю значения
- 29. class A { { // блок инициализации x = 1; // значение поля x равно 1
- 30. В блоках инициализации не допускается использование в правых частях присваиваний неинициализированных полей. class A { //
- 31. Замечание. Присваивание полю значения в блоке инициализации, который предшествует объявлению поля ошибки не вызывает, т.к. само
- 32. Замечание. В блоках инициализации можно инициализировать статические поля, при этом их значения будут обновляться при каждом
- 33. 2.11. Инициализация статических полей Для инициализации статических полей используется присваивание полю значения при его объявлении и
- 34. 2.12. Порядок вызова блоков инициализации и конструкторов при создании объекта Статические и нестатические блоки инициализации а
- 35. вызываются статические блоки инициализации всех классов от предка к потомку (от A до Z), при этом
- 36. class A { {...} // 1 – блок инициализации класса A static {...} // 2 –
- 37. 2.13. Значение полей по умолчанию Значения неинициализированных полей класса выставляются следующим образом по умолчанию: тип: byte,
- 38. Замечание. Вплоть до первой инициализации поля его значение равно значению по умолчанию начиная от строки с
- 39. Выше объявления поля можно производить его инициализацию в блоках инициализации, но нельзя использовать значение, которое оно
- 40. Замечание. Элементы массивов являющихся в java объектами, можно рассматривать как поля таких объектов, поэтому при выделении
- 41. 2.14. Абстрактные классы Абстрактный метод – это метод не имеющий реализации. Такие методы должны быть объявлены
- 42. Замечание. Модификатор abstract должен стоять перед ключевым словом class, но может стоять после модификатора уровня доступа
- 43. 2.15. Вызов конструкторов в классе В коде класса конструктор класса может быть вызван только из конструктора
- 44. Замечание. Из конструктора может быть вызван только один конструктор из оставшихся. Не допускается вызов сразу нескольких
- 45. Замечание. В коде класса можно создавать экземпляры этого класса с помощью оператора new, при этом всегда
- 46. 2.16. Конструктор без параметров в контексте наследования Если в классе определен хотя бы один конструктор, имеющий
- 47. class A { A(int x) {} } // код класса C написан без ошибок: class С
- 48. 2.17. Уровни доступа класса Класс может иметь два уровня доступа: открытый - public (имя класса предваряется
- 49. 2.18. Обращение к статическим полям и методам В статических методах нельзя вызывать нестатические методы и использовать
- 50. 2.19. Доступ к переменной this Статические методы не имеют доступа к переменной this. class A {
- 51. 2.20. Перегрузка статических методов при наследовании Статические методы могут быть перегружены нестатическими методами при наследовании. class
- 52. 2.21. Перекрытие статических методов при наследовании Статические методы не могут быть перекрыты нестатическими методами при наследовании.
- 53. 2.22. Абстрактные статические методы Статические методы не могут быть абстрактными. abstract class test { // ошибка
- 54. 2.33. Доступ к перекрытым методам родительского класса С помощью ключевого слова super можно получить доступ к
- 55. 2.34. Наследование абстрактного класса Класс, который наследует абстрактный класс должен или реализовать все его абстрактные методы
- 56. 2.35. Объектные переменные абстрактных классов Нельзя создать экземпляр абстрактного класса, однако можно объявить объектную переменную этого
- 57. abstract class A { abstract public void method(); public void print() { System.out.println("A"); } } class
- 58. Замечание. Абстрактные классы могут быть интерпретированы как интерфейсы, у которых часть методов уже реализована. Переменная, которая
- 59. 2.36. Уровни доступа и перекрытие методов При наследовании уровень доступа к перекрываемому методу не может быть
- 60. 2.37. Уровни доступа элементов классов Элементы класса (методы и поля) могут иметь 4 уровня доступа, которые
- 62. 2.38. Модификатор final Модификатором final может быть помечен класс, метод или поле.
- 63. Практические задания 1. Создать класс "Окружность". Класс должен иметь следующие поля: 1) x, y - координаты
- 64. 2. Создать класс "Вектор" для хранения ссылок на объекты. Класс должен иметь следующие поля: 1) массив
- 66. Скачать презентацию