Задания по классам и объектам в PHP
10. Классы и объекты
- Описать класс c одним методом и одним свойством. Метод должен печатать значение свойства объекта. Создать экземпляр класса. Вызвать метод.
- Показать, что при присваивании объекта переменной объект не копируется.
- Показать на примере отличие между переменной-объектом и переменной-ссылкой.
- Добавить в класс конструктор, устанавливающий значение свойства в значение переданного в конструктор аргумента. Создать экземпляр класса, используя этот конструктор.
- Добавить в класс константу. Сделать так, чтобы метод класса выводил также и значение этой константы.
- Добавить в класс статическое свойство. Вывести значение свойства.
- Продемонстрировать отличие в работе операторов == (эквивалентность) и === (идентичность) в применении к объектам.
- Создать два класса. Первый класс должен содержать свойство, значение которого — экземпляр второго класса. Создать экземпляр первого класса и сделать его копию. Показать, что значение свойства копии — тот же экземпляр второго класса, что и в оригинале.
- Определить метод __clone первого класса так, чтобы при создании копии значение свойства также копировалось.
- Создать класс, наследующий ранее созданный класс. Переопределить в классе-наследнике метод, печатающий значение свойства и константу так, чтобы в начало вывода добавлялся произвольный текст. Переопределенная версия метода должна вызывать соответствующий метод родительского класса.
- Добавить к определению родительского класса ключевое слово final. Объяснить ошибку при наследовании.
- Добавить к определению родительского класса ключевое слово abstract. Продемонстрировать невозможность создания экземпляра родительского класса и возможность использования класса-наследника.
- Определить три свойства класса, используя ключевые слова public, protected и private. Продемонстрировать действие каждого из них (доступ к свойству из метода класса, доступ к свойству из метода наследующего класса, остальные случаи).
- Создать класс со скрытым (private) свойством и открытые (public) методы для чтения и изменения этого свойства.
- Определить 2 интерфейса с двумя методами в каждом. Определить класс, реализующий оба интерфейса. Показать с помощью оператора instanceof, что экземпляр класса реализует оба интерфейса.
- Добавить в класс деструктор. Когда деструктор будет вызван? Показать на примере.
- Определить приведение объекта к строке.