2016-05-04 5 views
0

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

Существует абстрактный класс 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 метода, но я не имею права делать это).

Помогите мне, пожалуйста, потому что этот вопрос не позволяет мне спать!

+1

Вам не разрешено что-либо менять в 2 классах, тогда как вы можете это исправить? Ваш интервьюер - это инструмент, потому что выше код всегда возвращает фатальную ошибку. Единственное, что приходит на ум, это сделать «C» также абстрактным классом, но вы не можете этого сделать, я думаю? – Daan

ответ

1

Вам нужно объявить класс C абстрактным.

+0

Я знаю это, но я не знаю, есть ли какие-либо другие меры, но спасибо за ответ – user4785882