我认为这意味着通过多态的概念,可以将变量的类型声明为接口的类型。例如:如果Animal是一个接口,您可以编写以下代码:
Animal simba = new Lion();
我对此的理解是否正确?谢谢你的帮助。
答案 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 。**
所以:接口是一种特殊的类,它又是一种特殊的类型。所以接口是类型。在您的示例中,Animal
和Lion
都是类型,其中一个恰好可以转换为另一个。
*)松散地,类型说“这是什么结构”,并且值表示“这是什么内容”。 5
的类型为int
,其值为......嗯,5。
**)这使您可以从多个接口继承,而在Java中不可能从多个通用类继承。