2011-10-06 76 views
0

我遇到了抽象类的想法问题......我试图使用Eclipse,但这次IDE只是搞乱了它。 我已经上传了这些文件。 他们应该尝试进行编译,因为这在Java中实例化的错误

  1. 集装箱
  2. 基本容器
  3. 高度和颜色的异常
  4. 圆形和方形容器
  5. 客户端容器

我在这里上传文件:http://bit.ly/nDiObk

这是我得到的错误:

ClientForContainers.java:19: SquareBaseContainer is abstract; cannot be instantiated 
       BaseContainer aContainer = new SquareBaseContainer(10.0); 
             ^
ClientForContainers.java:31: RoundBaseContainer is abstract; cannot be instantiated 
       aContainer = new RoundBaseContainer(10.0); 

回答

9

你宣布你的子类为抽象的,太 - 不这样做!基类BaseContainer应该是抽象的,但子类0123'和SquareBaseContainer应该是抽象的,因为它们提供缺少的方法并且打算实例化,不应该是。

+0

我明白你大部分的意思。 [code] SquareBaseContainer.java:4:SquareBaseContainer不抽象,也不重写容器中的抽象方法getLength() public class SquareBaseContainer extends BaseContainer ^ 1 error [/ code] – user982466

+0

你的Container接口有一个'getLength()'方法;这意味着任何实现该接口的非抽象类 - 和“SquareBaseContainer”的确会因为它扩展了“BaseContainer” - 必须提供该方法的实现,正如错误消息所暗示的。同样,'RoundBaseContainer'需要它自己的版本。因此,在两个类中定义该方法 - 或者,如果您很着急,请删除Container中的抽象方法! –

1

SquareBaseContainer标记为abstract。抽象类不能被实例化。它们有点像接口,除了可以定义一些方法,并且可以定义实例成员。

但是,在这种情况下,看起来好像您已定义类中的所有方法。如果您希望此类可实例化,则应从类定义中删除abstract关键字。

1

我不知道你为什么认为IDE“只是搞砸了”。 IDE是否编写了这些代码?

抽象类不能被实例化。这意味着你不能做“新的AbstractClass()”。