Абстрактные классы и методы

1. Абстрактный метод нельзя вызвать, если он не был переопределен в производном классе. Собственно, написав функцию shape:: show() и поместив в нее вызов die(), мы как раз и гарантируем, что она обязательно будет переопределена в производном классе (иначе получим ошибку во время выполнения программы).

2. Объект абстрактного класса невозможно создать.

3. Любой класс, содержащий хотя бы один абстрактный метод, сам является абстрактным.

Абстрактные классы можно использовать только для одной цели: создавать от них производные. Сделаем из shape абстрактный класс, добавив ключевое слово abstract там, где это необходимо по логике.

<?php ## Абстрактный класс — геометрическая фигура,

abstract class Shape {

private $x=0, $y=0, $scale=1.0;

public function _construct() {

$this->show();

}

public function _destruct() {

$this->hide();

}

public final function moveBy($dx, $dy) {

$this->hide();

$this->x += $dx;

$this->y += $dy;

$this->show() ;

}

public final function resizeBy($coef) {

$this->hide();

$this->scale *= $coef;

$this->show() ;

}

public final function getCoord() { return array($this->x, $this->y); }

public final function getScale() { return $this->scale; }

// Абстрактные методы,

abstract protected function hide();

abstract protected function show();

}

?>

При объявлении абстрактного метода (например, show()) не нужно определять его тело — просто поставьте точку с запятой после его прототипа.








Дата добавления: 2015-08-26; просмотров: 1034;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.