Может ли один абстрактный класс расширить другой абстрактный класс и увеличить функциональность - PullRequest
25 голосов
/ 19 июля 2011

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

Ответы [ 5 ]

28 голосов
/ 19 июля 2011

Я не уверен насчет Java в частности, но он должен быть действительным.

С точки зрения ООП, если это имеет смысл, тогда используйте его. Чтобы использовать некоторые старые примеры, у вас может быть Vehicle абстрактный класс, а затем LandVehicle и FlyingVehicle абстрактные классы. Пока ваш пример имеет смысл как абстрактный класс, с вами все будет в порядке.

13 голосов
/ 19 июля 2011

Да, это возможно, и я не вижу причин, чтобы не использовать его, если вам это нужно (отказ от ответственности: однако есть много способов злоупотребить этим и усложнить вещи, как и все в программировании). обычно).

Следует отметить, что второму абстрактному классу не нужно реализовывать абстрактные методы из первого класса, но первый конкретный класс должен реализовывать оба.

4 голосов
/ 22 марта 2014

Да, вы можете!Один абстрактный класс может быть расширен другим абстрактным классом

2 голосов
/ 19 июля 2011

Да!

Но это имеет смысл, только если абстрактный подкласс добавляет больше функциональных возможностей (абстрактных или нет).

В противном случае, я не вижу смысла.

0 голосов
/ 19 июля 2011

Да, вы можете сделать это.И это хорошая практика, если ваш дочерний класс добавляет больше функциональности.Это позволяет двигаться к спецификации.Ваш родительский класс становится более общим, а дочерний - более конкретным.И вы можете реализовать оба согласно вашему требованию.

...