2014-02-20 2 views
0
public abstract class A { 
    abstract void polo(); 
} 

class B extends A { 
} 

мои сомнения, если я дам abstract ключевое слово в классе B означает, оно не показывает ничегоНормальный класс распространяется на другой абстрактный класс

abstract class B extends A { 
} 

Почему его не выдавалось сообщение здесь, чтобы реализовать методы в классе А - это мое сомнение.

Если бы я не дал абстрактную ключевого слова означает, что класс B показывает, как этот

типа B должен реализовать унаследованный абстрактный метод A.polo()

Что случилось с тем. Может ли абстрактный класс расширять другой абстрактный класс или нет.

+0

Да, это возможно. Кажется, вам нужно прочитать [this] (http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) – alex2410

ответ

4

Если неабстрактный класс расширяет абстрактный класс, он должен реализовать все абстрактные методы, в вашем случае класса B должен осуществить поло()

Если вы сделаете класс B аннотацию, то вы не должны , Но в этом случае вы не можете создать экземпляр B и классы, которые расширяют B, должны реализовать polo

+0

Теперь я создал обычный класс C и расширяет B, он реализует как polo, так и еще один абстрактный метод в B как дисплей, который также реализован в C, и он показывает аннотацию как переопределение поло и отображения. – Sankar

0

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

0

если B является абстрактным
не является обязательными для реализации метода
, но вы можете реализовать метод или левой реализацию дочернего класса

но если B не является абстрактным
является обязательным вы реализуете абстрактный метод

0

Один удобный трюк, который я использую в этой ситуации, состоит в том, чтобы начинать с абстрактного класса B. Затем я использую среду IDE для генерации избыточных аттестатов для всех абстрактных методов, а затем после этого делаю абстрактную абстракцию класса B, а затем просматриваю переопределенные методы и решаю для каждого из них: реализовать их или оставить их абстрактными на этом уровне.

Смежные вопросы