несколько дней назад я был на собеседовании, я был задан вопрос, как этот:Абстрактный класс, как сделать метод аннотацию
Существует абстрактный класс
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
метода, но я не имею права делать это).
Помогите мне, пожалуйста, потому что этот вопрос не позволяет мне спать!
Вам не разрешено что-либо менять в 2 классах, тогда как вы можете это исправить? Ваш интервьюер - это инструмент, потому что выше код всегда возвращает фатальную ошибку. Единственное, что приходит на ум, это сделать «C» также абстрактным классом, но вы не можете этого сделать, я думаю? – Daan