2011-10-06 47 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()」。