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

class B extends A { 
} 

我的疑问是,如果我给abstract关键字B类意味着它不会显示任何东西普通类扩展到另一个抽象类

abstract class B extends A { 
} 

为什么它不显示的信息在这里实现A类方法 - 这是我的疑问。

如果我没有给abstract关键字表示类B表示这样

B类必须实现继承的抽象方法A.polo()

什么是错的。抽象类是否可以扩展另一个抽象类?

+0

是的,它可以。似乎你需要阅读[that](http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) – alex2410

回答

4

如果一个非抽象类扩展一个抽象类,它必须实现所有的抽象方法,你的情况B类必须实现马球()

如果你把B类抽象的,那么你就不必。但在这种情况下,您无法创建B的实例,并且扩展B的类应实现polo

+0

现在我创建了一个普通的类C和扩展B,它实现了马球和一个B中的抽象方法作为也在C中实现的显示,并且它将注释显示为覆盖polo和显示。 – Sankar

0

您可以扩展抽象类,但是您必须决定新抽象类将对抽象方法做些什么。您可以选择实现所有这些方法,因此不需要抽象关键字。你也可以实现一些或者没有的方法,但是你必须把这个类标记为抽象的。 根据业务逻辑的不同,您可能会将抽象方法放入需要类实现的接口中。

0

如果B是抽象
不是强制性地实施方法
但你可以实现子类

方法或左实现,但如果B不是抽象
它是强制性的,你实现抽象方法

0

我在这种情况下使用的一个方便的技巧是让B类非抽象开始。然后,我使用IDE为所有抽象方法生成over-rides,然后我创建class B abstract,然后遍历重写的方法,并为每个方法决定是否实现这些方法,还是让它们在这个级别上也是抽象的。