【发布时间】:2016-02-21 08:15:57
【问题描述】:
当我继续我的在线教程时,我遇到了这个课程。我有一个接口和两个实现该接口的类。
public interface Payable {
double getPaymentAmount();
}
和
- 实现上述接口
Payable的类Invoice - 类
SalariedEmployee扩展了一个抽象类Employee,它实现了Payable接口。 - 一个测试类,包含测试它的主要方法。
现在在测试类中,当创建一个对象数组时,对象的类型被称为Payable[]而不是SalariedEmployee[]或Invoice[],就像
public static void main(String[] args) {
Payable[] payableObjects = new Payable[4];
payableObjects[0] = new Invoice("0000", "abc", 1,2);
payableObjects[1] = new SalariedEmployee("test", "user", "000-000", 35);
- 是不是因为所有的类都实现了Payable[]接口?
- 如果接口定义在顶层层次结构中,是否总是可以创建实现该接口的所有类的对象?
【问题讨论】:
-
1.是的,如果不是这样,你会得到一个编译器错误。 2. 是的,以
List或Map为例,您应该始终将变量声明为List或Map以便能够更改分配类类型。您的一般用例是,您只想调用此特定接口提供的方法。 -
谢谢@KevinEsche。请把它作为答案发布,我会接受的。
-
是的,这就是多态性的全部意义所在。
标签: java interface polymorphism super implements