interface aI {
void doSomething();
}
class aL implements aI {
@Override
public void doSomething() {
System.out.println("aL is doing something");
}
}
class bL implements aI {
@Override
public void doSomething() {
System.out.println("bL is doing something");
}
}
public class Main {
public static void main(String[] args) {
aI obj1 = new aL(); // 接口引用指向 aL 的对象
aI obj2 = new bL(); // 接口引用指向 bL 的对象
obj1.doSomething(); // 输出: aL is doing something
obj2.doSomething(); // 输出: bL is doing something
}
}
原理
Java 通过 多态 和 运行时绑定 来确定接口引用实际指向的对象类型。
接口引用可以指向任何实现该接口的类的对象。
JVM 在运行时根据对象的实际类型调用正确的方法实现。
为什么使用接口引用?
使用接口引用而不是具体类引用的好处包括:
解耦:代码依赖于接口而不是具体实现,降低了模块之间的耦合度。
扩展性:可以轻松替换实现类,而不需要修改依赖接口的代码。
多态性:同一个接口可以有不同的实现,程序可以根据需要动态选择实现类。