Jump to content
  • 0

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


underW
 Share

Question

Сейчас вот стал более глубоко вникать в ООП в PHP, так вот:

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

Абстрактные методы имеют только объявление и не имеют реализации. Класс, который содержит такие методы, должен быть обязательно объявлен как абстрактный:

<?
abstract class MyClass {
abstract public function fn();
}
?>

Это все понятно, как объявлять и что это такое, НО ну никак не могу понять, зачеееем они надо????

Вот нашел такую цитату:

А зачем тогда нужны абстрактные методы и классы? А чтобы описать объект, который будет реализован, но который еще не реализован.

Зачем описывать объект, который будет реализован, но еще не реализован? В чем суть абстрактного класса???

Можно объяснить на пальцах?

Спасибо.

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

abstract class Shape
{
protected $_id;

abstract public function draw() {}

public function getId()
{
return $this->_id;
}
}

class Circle extends Shape
{
public function draw()
{
//реализация
}
}

Мы хотим иметь фигуры, которым должны присваиваться некие ID. Создаём абстрактный класс Shape (фигура) в котором реализуем генерацию и получение ID. А также объявляем абстрактным метод draw(), чтобы фигуры умели себя рисовать. Разумеется сам Shape по понятным причинам себя нарисовать не может, но наследующие его классы могут.

Link to comment
Share on other sites

  • 0

Я использую чтобы вынести отдельно структуру класса, а то трудно пролистывать весь файл в поисках нужной функции, а тут сразу видно и имя и параметры. Всё это можно было бы сделать и в комментариях, но мне так проще.

Link to comment
Share on other sites

  • 0

underW

Этот пример демонстрирует весь дзен абстрактных классов. Потому его везде и применяют.

Проведите соответствие в реальной жизни. Любую фигуру (shape) можно нарисовать (метод draw), но если я попрошу нарисовать вас фигуру, вы наверное уточните "какую именно?". Т.е. абстрактное понятие "фигура" может быть нарисовано, но КАК - может быть применимо только к конкретным фигурам типа окружность (circle).

Именно абстрактное понятие фигура и задаёт наследуемым классам обязанность (абстрактным методом) - уметь себя рисовать, а так же класс shape может содержать реализацию других общих методов для всех фигур.

Link to comment
Share on other sites

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.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy