2011-12-16 53 views
4

我認爲這意味着通過多態的概念,變量的類型可以被聲明爲接口的類型。例如:如果動物是一個界面,你可以編碼如下:接口也是一種類型是什麼意思?

Animal simba = new Lion(); 

我的理解是否正確?謝謝你的幫助。

+1

是的,正確的,假設`Lion`類實現`Animal`接口。 – aroth 2011-12-16 01:12:05

回答

1

每個對象都有一個(和值)*有多種類型:基本類型(如int),類類型(如string),枚舉,陣列(也許我忘了一些)。

術語「界面」是指一個特定類型的類類型的:它是沒有成員對象(安全常量),只有公共方法,所有這些都是抽象一類**

所以:接口是一種特殊的類,它又是一種特殊的類型。所以接口類型。在你的例子中,AnimalLion都是類型,一個恰好可以轉換爲另一個。

*)鬆散地說,該類型表示「這是什麼結構」,值是「這是什麼內容」。該類型的5int,其價值是......嗯,5

**)這使您可以從多個繼承接口,而這是不可能在Java中,從多個一般繼承類。

3

interface可以採用類似於Java中的superclass的行爲,因爲它可以採用其實現的類型。

在您的示例中,具體而言,您將Animal定義爲interface,其中Lion實現。

因此,您可以創建類型爲LionAnimal。該代碼是這樣的:

interface Animal { 
    //do interfacing stuff 
} 

class Lion implements Animal { 
    public Lion() { 
    //... 
    } 
    //do implementing stuff 
} 

class Driver { 
    Animal simba = new Lion(); // This works because of polymorphism. 
} 

你是正確的,不過,在說這是polymorphism一個例子。