В настоящее время существует класс A, который имеет окончательный метод say mainMethod(), и он вызывает три метода a(), b() и c(). Теперь класс child должен реализовать a и b, поэтому я сделал их абстрактными. Но c может не понадобиться. Как мне это достичь? Я использую PHP.Как реализовать функцию в классе, который может или не может быть перенаправлен в подкласс?
ответ
Просто создайте пустой не абстрактный метод, и в комментариях описано, что оно может быть перезаписано. Например:
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, или что-то другое, способное указывать код, где также будет отображаться комментарий, поэтому программист будет проинформирован о назначении функции.
Я тоже думал об этом, но оставить пустые методы - это плохая практика. Есть ли другой путь? – Pushkar
Я не думаю, что это плохая практика, и я не думаю, что есть другой путь. Вы не можете вызвать неопределенный метод, и вы также не можете создать абстрактный метод, который не должен быть реализован. –
Интерфейс, вероятно, был бы лучшим инструментом для реализации реализации для 'a()' и 'b()' –
Пожалуйста, найдите время, чтобы найти пример фактического кода. Поскольку вопрос в настоящее время написан, трудно точно определить, что у вас есть, и предлагаемое решение может не решить вашу проблему, которую вы хотите. –