Приднестровская поддержка XOOPS
Предположим, у нас есть класс (например, Сlass1). С помощью наследования мы можем создать новый класс (например, Сlass2), в котором будет доступ ко всем свойствам и методам класса Сlass1, а также к некоторым новым свойствам и методам.
class Class1 { public function f_print() { echo 'Метод f_print класса Class1<br>'; } public function f_display() { echo 'Метод f_display класса Class1<br>'; } }
class Class2 extends Class1 {
public function f_new() {
echo 'Метод f_new класса Class2<br>';
}
}
Ключевое слово extends указывает, что класс Class2 наследует все свойства и методы класса Class1.
$obj = new Class2();
$obj->f_new();
$obj->f_print();
$obj->f_display();
Выведенный этим примером код HTML будет отображен Web-браузером так:
Функция f_new класса Class2
Функция f_print класса Class1
Функция f_display класса Class1
Если имя функции в классе Class2 совпадает с именем функции класса Class1, то будет использоваться функция из класса Class2:
class Class2 extends Class1 {
public function f_new() {
echo 'Метод f_new класса Class2<br>';
}
public function f_display() {
echo 'Привет';
}
}
$obj = new Class2();
$obj->f_display();
Этот пример выведет Привет, а не Метод f_display класса Class1.
Чтобы использовать метод, объявленный в родительском классе, следует вызвать его с помощью ключевого слова parent. Пример:
class Class1 {
public function f_display() {
echo 'Метод f_display класса Class1<br>';
}
}
class Class2 extends Class1 {
public function f_display() {
parent::f_display();
echo 'Привет';
}
}
$obj = new Class2();
$obj->f_display();
Выведет:
Метод f_display класса Class1
Привет
В некоторых случаях необходимо запретить переопределение метода. Для этого перед определением метода следует указать ключевое слово final:
class Class1 {
final public function f_display() {
echo 'Метод f_display класса Class1<br>';
}
}
class Class2 extends Class1 {
public function f_display($msg) {
echo $msg;
}
}
$obj = new Class2();
Так как перед методом f_display() в классе Class1 стоит ключевое слово final, интерпретатор выведет сообщение об ошибке:
Fatal error: Cannot override final method Class1::f_display()
Отправитель | Нити |
---|
3 пользователь(ей) активно (2 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 3 далее... |