2016-11-25 73 views
-3

我知道Java中的接口是由虛擬機作爲抽象類來處理的。所以,Java中的每個類,抽象或不具有構造函數。這是否意味着接口也有構造函數?因爲一方面我也是有道理的,因爲它們是抽象類。另一方面,它沒有意義,因爲接口沒有任何屬性來初始化。 那麼它是如何工作的?接口在Java中有一個構造函數嗎?

+4

你不知道那個。你*認爲*,你錯了。因此,你的問題的其餘部分是基於一個錯誤的前提。 – EJP

+0

@EJP所以接口不作爲虛擬機的類處理? –

+1

「你錯了」的哪部分你不明白?接口被虛擬機處理爲接口。 – EJP

回答

4

接口沒有構造函數。他們的實現做。

+1

@LoganKulinski您的評論與此答案的相關性使我無法迴避。 – EJP

1

所有的接口是:

interface MyInterface{ 
    void addNumber(int amount); 
    void subtractNumber(int amount); 
    int getNumber(); 
} 

你不「跑」的接口,並且接口沒有創建對象出來的東西。

的類工具你的界面確實有,雖然構造函數:

class MyNumber implements MyInterface{ 
    private int myNumber; 

    //Here is your constructor, called when you instantiate it. 
    myNumber(int number){ 
     myNumber = number; 
    } 

    //Now you need to add the methods in your interface 
    public void addNumber(int number){ 
     myNumber = myNumber + number; 
    } 

    public void subractNumber(int number){ 
     myNumber = myNumber - number; 
    } 

    public int getNumber(){ 
     return myNumber; 
    } 
} 

所以,不,接口做具有構造。希望這可以幫助!

編輯:當您創建對象時,你打電話給你的構造函數:

MyNumber number = new MyNumber(5); //Calls the constructor and creates a new MyNumber with the value of 5. 
number.addNumber(6); //Adds 6 to your number, it is now 11. 
number.subtractNumber(3); //Subracts 3 from your number, it is now 8. 
number.getNumber(); //returns the value of myNumber inside of your MyNumber object, which is 8. 

編輯2:我想更詳細地說明一點上的接口。你說他們沒有任何屬性來啓動是正確的。他們有方法來執行。如果你的界面有一個「移動」方法,它可以應用於許多不同的事物。汽車,狗,小船,飛機,樹懶和蛇都會移動,但它們如何移動?汽車比樹懶移動得更快,所以它的移動方式不同。當您爲需要移動的任何內容創建課程時,您可以更改該移動方法並根據需要調整它。這就是界面的靈活性。

+0

方法不需要初始化。 – EJP

+0

哎呀,謝謝指出:) :)改變它實施! –

+0

除了'屬性初始化'之外,我認爲在最後一段中沒有任何用處。它只是造成混亂。 – EJP

相關問題