Скажите в двух словах, какой главный смысл полиморфизма(читал что 1 интерфейс и множество реализаций), и приведенный код нже демонстрирует ли полиморфизм?
<?php header('content-type: text/html;charset=utf-8'); ?> <? // Класс Фигуры (какой фигуры - неизвестно. просто фигуры) abstract class Figure { abstract public function Draw(); // абстрактный метод «Нарисовать фигуру» }
// Класс Треугольника class Triangle extends Figure { public function Draw() { // метод «Нарисовать треугольник» echo 'рисуем треугольник '.'<br/>'; } }
// Класс Эллипса class Ellipse extends Figure { public function Draw() { // метод «Нарисовать эллипс» echo 'рисуем эллипс '.'<br/>'; } }
// Класс Круга class Circle { public function Draw() { // метод «Нарисовать круг» echo 'рисуем круг '.'<br/>'; } }
// Класс Прямоугольника class Rectangle extends Figure { public function Draw() { // метод «Нарисовать прямоугольник» echo 'рисуем прямоугольник '.'<br/>'; } }
// обыкновенная функция рисования фигуры function drawFigure($fig) { if ($fig instanceof Figure) { $fig->Draw(); // тут мы на этапе написания этой функции не знаем, // какая именно фигура будет рисоваться, а интерпретатор // php это знает только на этапе выполнения скрипта } else { echo 'Неизвестная фигура'; } }
// создадим фигуры $triangle = new Triangle(); // треугольник $ellipse = new Ellipse(); // эллипс $rectangle = new Rectangle(); // прямоугольник $circle = new Circle(); // круг
// нарисуем прямоугольник drawFigure($rectangle);
// нарисуем эллипс drawFigure($ellipse);
// попытаемся нарисовать круг drawFigure($circle); ?>
НЕ понятно вот это место:
//Скажите $fig в этот параметр передаются объекты в качестве параметра //и вот эта переменная $fig превращается в объект? function drawFigure($fig) { if ($fig instanceof Figure) { //А здесь сравнивается является ли объект под названием $fig //объектом класса под названием Figure? $fig->Draw(); } else { echo 'Неизвестная фигура'; } }
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
people2010
Скажите в двух словах, какой главный смысл полиморфизма(читал что 1 интерфейс и множество реализаций), и приведенный код нже демонстрирует ли полиморфизм?
НЕ понятно вот это место:
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.