Несколько дней назад я был на собеседовании, мне задали такой вопрос:
Есть абстрактный класс
A
с двумя методамиfoo
а такжеbar
, от
он породил производный классC
, который был реализован только метод
foo
, Какие изменения нужно внести в скрипт, чтобы сделать
это работает, в то время как реализация и интерфейс классов А и С
не должно быть изменено
abstract class A {
abstract public function foo();
abstract public function bar();
}
class C extends A {
public function foo() {
// some code
}
}
я сказал: хорошо, мы можем просто добавить один метод к нашему C
учебный класс
public function bar() {
//
}
они сказали, что это нормально, но что, если вы не можете добавить этот метод и не можете изменить абстрактный класс A
(и его методы).
И есть два варианта: либо мой интервьюер дурак, либо я дурак и что-то упустил.
я прочитал php.net
документация об абстрактных классах, и я не вижу другого решения. (Конечно, я могу сделать класс A
не абстрагироваться или удалить abstract modifier
от bar
метод, но мне нельзя это делать);
Помогите мне, пожалуйста, потому что этот вопрос не дает мне спать!
Вам нужно объявить, что класс C является абстрактным.
Других решений пока нет …