2014-09-02 89 views
-1

我對Java很新穎,想知道如何創建不同類的對象。我會擴展這個類,但是我已經擴展了另一個類。例如:如何從java中的不同類創建對象

public class Dog extends Animal{ 
    //How do I create a "Chupacabra" object in here? 
    Chupacabra jeff = new Chupacabra(); 
    //I've been doing this^, but it says "Cannot be resolved as type" 
} 

public class Chupacabra { 

} 

還是我瘋了?我知道在那裏製作一個Chupacabra物體沒什麼意義,但是......我需要。

回答

2

如果你想僅僅有Dog類的內部Chupacabra類的實例,那麼你可以聲明它作爲一個實例變量,因爲這樣的:

Dog.java

public class Dog extends Animal{ 
    Chupacabra myChupacabra = new Chupacabra(); 

    //... 
} 

Chupacabra.java

public class Chupacabra { 

} 

請注意,需要在Dog.java中聲明Dog類,並且需要在Chupacabra.java中聲明Chupacabra類。

有關在Java中聲明成員變量的更多信息,請參閱the documentation

+0

這就是我一直在做的,除了它說「它不能被解析爲某種類型」。我應該輸入什麼? – user3750325 2014-09-02 00:57:51

+0

你確定這兩個類是在不同的文件? – therealrootuser 2014-09-02 00:58:34

+0

他們在不同的文件。和不同的包。 – user3750325 2014-09-02 00:59:45

3
public class Dog extends Animal{   
    Chupacabra ch = new Chupacabra(); //creating "Chupacabra" object 
} 

class Chupacabra { 

} 

在一個.java名稱下不能有兩個公共類;所以我從第二課中刪除了「公開」。

如果你願意,你可以保持第二類爲「Chupacabra.java」

+0

這就是我一直在做的,只是它說「它不能被解析爲類型」。我應該輸入什麼? – user3750325 2014-09-02 00:55:17

+0

你是否在任何包中使用這些類? – 2014-09-02 00:59:22

+0

你能用完整的包裝信息更新你的代碼嗎? – 2014-09-02 01:02:26

2

如果我理解你的問題,並假設Chupacabra是在同一個包Dog。你可以使用默認的構造函數一樣 -

public class Dog extends Animal{ 
    //How do I create a "Chupacabra" object in here? 
    private Chupacabra myChupacabra = new Chupacabra(); 
} 

如果Chupacabra是在不同的包從Dog,那麼你將需要進口Chupacabra

+0

這就是我一直在做的,只是它說「它不能被解析爲某種類型」。我應該輸入什麼? – user3750325 2014-09-02 00:57:29

+0

@ user3750325編輯。如果「Chupacabra」與「Dog」不在同一個包中,那麼您需要導入「Chupacabra」。 – 2014-09-02 00:58:10

+0

好吧,它是在一個不同的包。在Dog文件的頂部,我會這樣做嗎?import packagename.Chupacabra? – user3750325 2014-09-02 01:00:58