说接口也是一种类型是什么意思?

时间:2011-12-16 01:09:04

标签: java interface polymorphism

我认为这意味着通过多态的概念,可以将变量的类型声明为接口的类型。例如:如果Animal是一个接口,您可以编写以下代码:

Animal simba = new Lion();

我对此的理解是否正确?谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

interface可以与Java中的superclass类似,因为它可以采用其实现的类型。

在您的示例中,具体而言,您将Animal定义为interface实现的Lion

因此,您可以创建Animal类型Lion。代码如下所示:

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的一个例子是正确的。

答案 1 :(得分:1)

每个对象都有一个类型(和一个值)。*有很多类型:基本类型(如int),类类型(如string),枚举,数组(也许我忘了一些)。

术语“接口”是指特定类型的类:它是一个没有成员对象(安全常量)的类,只有公共方法,所有这些都是 abstract 。**

所以:接口是一种特殊的类,它又是一种特殊的类型。所以接口类型。在您的示例中,AnimalLion都是类型,其中一个恰好可以转换为另一个。

*)松散地,类型说“这是什么结构”,并且值表示“这是什么内容”。 5的类型为int,其值为......嗯,5。

**)这使您可以从多个接口继承,而在Java中不可能从多个通用类继承。