2015-02-06 2 views
0

В настоящее время существует класс A, который имеет окончательный метод say mainMethod(), и он вызывает три метода a(), b() и c(). Теперь класс child должен реализовать a и b, поэтому я сделал их абстрактными. Но c может не понадобиться. Как мне это достичь? Я использую PHP.Как реализовать функцию в классе, который может или не может быть перенаправлен в подкласс?

+0

Пожалуйста, найдите время, чтобы найти пример фактического кода. Поскольку вопрос в настоящее время написан, трудно точно определить, что у вас есть, и предлагаемое решение может не решить вашу проблему, которую вы хотите. –

ответ

1

Просто создайте пустой не абстрактный метод, и в комментариях описано, что оно может быть перезаписано. Например:

abstract class A 
{ 
    public abstract function a(); 
    public abstract function b(); 

    /** 
    * This method may be overwritten for purpose X ... 
    */ 
    public function c() 
    { 
     /* empty */ 
    } 
} 

Таким образом, вы можете позвонить c(), и он может или не может иметь какую-либо функцию. Наследующий класс вынужден реализовать a() и b() и может дополнительно перезаписать c(). Хороший редактор php, такой как NetBeans, или что-то другое, способное указывать код, где также будет отображаться комментарий, поэтому программист будет проинформирован о назначении функции.

+0

Я тоже думал об этом, но оставить пустые методы - это плохая практика. Есть ли другой путь? – Pushkar

+0

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

+0

Интерфейс, вероятно, был бы лучшим инструментом для реализации реализации для 'a()' и 'b()' –