[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Полиморфизм
kakadyi
В чём преимущество данного кода(полиморфизм)
<?php 
abstract class Figure
{
abstract public function Draw();
}
class Triangle extends Figure {
public function Draw() {
echo 'рисуем треугольник';
}
}

class Ellipse extends Figure {
public function Draw() {
echo 'рисуем эллипс';
}
}

class Circle {
public function Draw() {
echo 'рисуем круг';
}
}

function drawFigure($fig) {
if ($fig instanceof Figure) {
$fig->Draw();
} else {
echo 'Неизвестная фигура';
}
}

$triangle = new Triangle();
$ellipse = new Ellipse();
$circle = new Circle();

drawFigure($ellipse);
drawFigure($circle);
drawFigure($triangle);

?>

если можно в родительском классе определить тот же самый метод и затем переопределить в дочерних?
<?php 
class Figure
{
function Draw() {
echo "Рисуем хз что";
}
}

class Triangle extends Figure {
public function Draw() {
echo 'рисуем треугольник';
}
}

class Ellipse extends Figure {
public function Draw() {
echo 'рисуем эллипс';
}
}

class Circle {
public function Draw() {
echo 'рисуем круг';
}
}

function drawFigure($fig) {
if ($fig instanceof Figure) {
$fig->Draw();
} else {
echo 'Неизвестная фигура';
}
}

$triangle = new Triangle();
$ellipse = new Ellipse();
$circle = new Circle();

drawFigure($ellipse);
drawFigure($circle);
drawFigure($triangle);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.