Содержание
- 2. План Геттеры и сеттеры Переопределение методов Абстрактные классы Java Ключевое слово Java final Статические переменные Java
- 3. Геттеры и сеттеры Если переменная имеет уровень доступа private, к ней невозможно обратиться извне класса, в
- 4. Геттеры и сеттеры Существуют правила объявления таких методов, рассмотрим их: Если свойство НЕ типа boolean, префикс
- 5. Геттеры и сеттеры Для создания имени геттера или сеттера, первая буква свойства должна быть изменена на
- 6. Геттеры и сеттеры Геттер метод должен быть public, не иметь параметров метода, и возвращать значение соответствующее
- 7. Геттеры и сеттеры В языке Java при проектировании классов принято ограничивать уровень доступа к переменным с
- 8. Геттеры и сеттеры
- 9. Геттеры и сеттеры Геттеры и сеттеры делают код более громоздким, поэтому часто задается вопрос о том,
- 10. Геттеры и сеттеры Любой класс в том же пакете может обратится к ним напрямую и изменить
- 11. Геттеры и сеттеры Это может привести к неправильным дальнейшим вычислениям. Перепишем этот класс с использованием концепции
- 12. Геттеры и сеттеры Пользователь данного класса не может напрямую добраться к переменным, доступ осуществляется только через
- 13. Геттеры и сеттеры В следующем примере рассмотрим возможности геттера. Класс User содержит две переменные - логин
- 14. Геттеры и сеттеры Результат выполнения:
- 15. Переопределение методов Если в иерархии классов совпадают имена и сигнатуры типов методов из подкласса и суперкласса,
- 16. Переопределение методов В следующем примере в классе M определен метод print(). В его наследнике классе N
- 17. Переопределение методов Когда переопределенный метод вызывается из своего подкласса, он всегда ссылается на свой вариант, определенный
- 18. Создадим три объекта и для каждого вызовем метод print(). Первая переменная obj1 типа M указывает на
- 19. Результат выполнения: Переопределение методов
- 20. Существует такое понятие в Java как динамическая диспетчеризация методов - это механизм, с помощью которого вызов
- 21. Рассмотрим более конкретный пример, который показывает зачем переопределяются методы. Создадим класс Figure, описывающий какую-то абстрактную фигуру
- 22. Переопределение методов
- 23. Создадим массив типа Figure, который будет содержать объекты типа Figure, Triangle и Rectangle. Подсчитаем площадь для
- 24. Результат выполнения кода: Переопределение методов
- 25. После выхода Java 5 появилась возможность при переопределении методов указывать другой тип возвращаемого значения, в качестве
- 26. Статические методы не могут быть переопределены. Класс наследник может объявлять метод с такой же сигнатурой, что
- 27. Создадим в суперклассе и наследнике статические методы с одинаковой сигнатурой: Переопределение методов
- 28. Попробуем вызвать статический метод используя переменную типа Base, которая указывает на объект типа Sub. При вызове
- 29. Методы объявленные как private никто, кроме самого класса не видит. Поэтому их наличие/отсутствие никак не отражается
- 30. Необязательная аннотация @Override используется с методом для указания того, что он переопределен. Если метод переопределен неверно,
- 31. Абстрактные методы – это методы у которых отсутствует реализация. Общая форма: Пример: Абстрактные классы Java
- 32. Абстрактные методы должны быть обязательно переопределены в подклассе. Любой класс, содержащий один или больше абстрактных методов,
- 33. У абстрактного класса в Java не может быть никаких объектов. Но абстрактные классы можно применять для
- 34. Также нельзя объявлять абстрактные конструкторы или абстрактные статические методы. Рассмотрим пример использования абстрактных классов и методов
- 35. Абстрактные классы Java
- 36. Любой подкласс, производный от абстрактного класса, должен реализовать все абстрактные методы из своего суперкласса или же
- 37. У абстрактного класса не может быть объектов, но можно создать массив абстрактного класса, который будет содержать
- 38. Результат выполнения программы: Абстрактные классы Java
- 39. Ключевое слово final означает завершенный и может быть использовано для объявления переменных, методов и классов. Переменная
- 40. Следующий пример показывает различные варианты объявления завершенных переменных. Ключевое слово Java final
- 41. Константы – это переменные, значение которых не меняется. Константами в Java принято называть public static final
- 42. Давайте перепишем код введя константу с именем ACCELERATION. Какие преимущества дает нам введение константы? Во-первых имя
- 43. Чтобы запретить переопределение метода в классах наследниках, в начале его объявления следует указать ключевое слово final.
- 44. Для предотвращения наследование класса в начале объявления класса следует указать ключевое слово final. Объявление класса завершенным
- 45. Ключевое слово языка Java static используется для объявления статических членов класса - методов и переменных. Также
- 46. Статические переменные Java, объявляются внутри класса с ключевым словом static. Такие переменные, по существу, являются глобальными
- 47. Рассмотрим различие между обычными и статическими переменными на следующем примере. Для обращения к обычной переменной а,
- 48. При обращении к статической переменной из другого класса, необходимо указать имя ее класса - StaticVars.b. Можно
- 49. Результат выполнения кода: Статические переменные Java
- 50. Рассмотрим классический пример, демонстрирующий использование статических переменных для подсчета количества созданных объектов класса Ball. Для этого
- 51. Результат выполнения кода: Статические переменные Java
- 52. Статические методы можно вызывать не используя ссылку на объект. В этом их ключевое отличие от обычных
- 53. Пример использования статических методов. Статические методы Java
- 54. Статические методы Java
- 55. Если для инициализации статических переменных требуется произвести вычисления, то для этой цели достаточно объявить статический блок
- 56. Для того чтобы получить доступ к статическим членам классов, требуются указывать ссылку на класс. К примеру,
- 57. Чтобы улучшить читабельность кода можно импортировать статические члены класса почти так же, как и обычные классы,
- 58. В Java определен один специальный класс, называемый Object. Все остальные классы являются подклассами, производными от этого
- 59. Методы класса Object в Java: protected Object clone() - создает новый объект, не отличающийся от клонируемого.
- 60. В Java сравнение объектов производится с помощью метода equals() класса Object. Этот метод сравнивает содержимое объектов
- 61. Рассмотрим пример использования метода equals() - в классе Person определены три переменные: fullName, age и retired.
- 62. Определим два объекта person1 и person2 типа Person с одинаковыми значениями. При их сравнении с помощью
- 63. Класс Object и методы класса Object
- 64. Результат выполнения: Класс Object и методы класса Object
- 65. Часто необходимо узнать содержимое того или иного объекта. Для этого в классе Object языка Java определен
- 66. Следующий пример демонстрирует это: Класс Object и методы класса Object
- 67. Для вызова метода toString() необходимо просто передать нужный объект в System.out.println: Класс Object и методы класса
- 68. Результат выполнения программы будет такой: Чисто теоретически можно явно вызывать метод toString() - System.out.println(person.toString()), но так
- 69. Приложение на языке Java может вызывать методы, написанные на языке С++. Такие методы объявляются в языке
- 70. Интерфейс это конструкция языка Java, в рамках которой принято описывать абстрактные публичные (abstract public) методы и
- 71. Рассмотрим следующую картинку. У нас есть контракт (интерфейс), в котором описано какие действия должна выполнять мышка.
- 72. Интерфейсы как и классы могут быть объявлены c уровнем доступа public или default. Переменные интерфейса являются
- 73. Все методы интерфейса являются public abstract и эти модификаторы тоже необязательны. Объявляемые методы не содержат тел,
- 74. Чтобы указать, что данный класс реализует интерфейс, в строке объявления класса указываем ключевое слово implements и
- 75. Один интерфейс может быть реализован любым количеством классов. Например, в следующей схеме добавлены еще два класса
- 76. Класс Robot из вышеуказанной схемы: Интерфейс
- 77. Если класс реализует интерфейс, но не полностью реализует определенные в нем методы, он должен быть объявлен
- 78. Тип интерфейса можно указывать при объявлении переменных, которые будут содержать ссылки на объекты, классы которых реализуют
- 79. Один класс может реализовать любое количество интерфейсов. На следующей схеме показан класс Pickup, который реализует два
- 80. Интерфейс
- 81. Для указания того, что класс реализует несколько интерфейсов, после ключевого слова implements через запятую перечисляются нужные
- 82. Интерфейсы объявленные в классах или в другие интерфейсах называются внутренние или вложенные. Например интерфейс NestedIf определен
- 83. При обращении к интерфейсу NestedIf требуется указывать имя его внешнего класса - A.NestedIf: Интерфейс
- 84. Интерфейс
- 85. Интерфейс может наследоваться от другого интерфейса через ключевое слово extends. Один интерфейс, в отличие от классов,
- 87. Интерфейсы маркеры - это интерфейсы, у которых не определены ни методы, ни переменные. Реализация этих интерфейсов
- 88. В JDК 8 в интерфейсы ввели методы по умолчанию - это методы, у которых есть реализация.
- 89. Интерфейс SomeInterface объявляет метод по умолчанию defaultMethod() с базовой реализацией: Интерфейс
- 90. Класс SomeInterfaceImpl1, реализующий этот интерфейс, не переопределяет метод defaultMethod() - так можно. Интерфейс
- 91. А если класс SomeInterfaceImpl2 не устраивает реализация по умолчанию, он переопределяет этот метод: Интерфейс
- 92. Создаем два объекта классов SomeInterfaceImpl1 и SomeInterfaceImpl2, и вызываем для каждого метод defaultMethod(). Для объекта класса
- 93. Результат выполнения: Интерфейс
- 95. Скачать презентацию