我看到有人创建了某个类的实例,并将其分配给该类实现的类型为interface的引用变量。
interface A {
void display();
}
public class InterfaceObject implements A {
public void display(){
System.out.println("show this..");
}
public static void main(String[] args) {
A aObj = new InterfaceObject();
aObj.display();//OUTOUT:show this..
InterfaceObject bObj = new InterfaceObject();
bObj.display();//OUTOUT:show this..
}
}
这里对象aObj是一个接口对象,对象bObj是实现接口的类的直接实例。但是通过两个对象的调用display()会产生相同的结果 问题:创建接口对象(接口类型的引用变量)有什么好处?它只会增加代码的混乱吗?当然,情况并非如此。
答案 0 :(得分:0)
界面(或抽象类型)的经典插图是形状。假设您正在编写一个显示形状的程序 - 三角形,矩形,圆形等。所有这些都可以实现某些方法,允许它们显示在屏幕上 - 比如显示(屏幕)方法 - 这样每个形状都知道如何为自己做到这一点。
但是通过实现'shape'接口,并将对象视为Shapes,代码处理形状不必知道处理每种类型的形状,只需要知道形状常见的那些方法。这是优势。程序的显示部分可以有这些的集合并处理它们而不必知道它们的个性特征。
这种普遍性适用于很多情况。