Public, private, protected

В предыдущих примерах, все свойства и методы мы объявляли как public. Однако, помимо public можно задать элементы как private, protected.

  • public — можно получить доступ из любого контекста
  • private — можно получить доступ только из того класса, в котором они объявлены. Подклассы данного класса не имеют доступа к таким свойствам и методам.
  • protected — доступ можно получить только из самого класса или его подкласса. Внешнему коду доступа не предоставляется.

Зачем? Подобный подход позволяет создвать ясный и полезный интерфейс для объекта.

Выполнить

Задание 1. Создайте класс Price который содержит свойство price и метод getPrice(). Метод выводит цену продукта с учетом скидки 15%. На его основе создайте объект и присвойте свойству значение c помощью конструктора.

  • Задайте свойству область видимости public. Вызовите price и getPrice() вне объекта
  • Измените область видимости price на private. Повторите действия указанные выше
  • Измените область видимости price на protected. Повторите действия указанные выше
Сделайте выводы о области видимости свойств.


Задание 2. Создайте на основе класса Price класс наследник NewPrice, который содержит метод NewSale(). Данный метод рассчитывает сумму скидки в зависимости от цены. Если цена больше чем 1500, скидка составит 15%, если меньше 8%.

Создайте на основе NewPrice новый объект и заполните его свойства. Протестируйте вывод новой цены с учетом скидки.

  • Задайте свойству price класса Price область видимости public. Вызовите метод NewSale() объекта созданного на основе NewPrice
  • Задайте свойству price класса Price область видимости private. Вызовите метод NewSale() объекта созданного на основе NewPrice
  • Задайте свойству price класса Price область видимости protected. Вызовите метод NewSale() объекта созданного на основе NewPrice
Сделайте выводы о области видимости свойств и их доступности для классов наследников.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *