2011-12-16 146 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一个例子。