通过定义接口,可以将类的依赖转移到接口上,从而打破循环依赖。 // 定义接口publicinterfaceServiceA{voidmethodA();}publicinterfaceServiceB{voidmethodB();}// 类 A 实现接口 ServiceApublicclassClassAimplementsServiceA{privateServiceBserviceB;publicClassA(ServiceBserviceB){this.serviceB=serviceB;}publicvoidm...
与此对应的是,调用的方法依赖于隐式参数的实际类型,这就需要在运行时通过动态绑定确定调用方法,比如上面的 cat.cry() 当程序运行,并且釆用动态绑定调用方法时,JVM 一定会调用与 obj 所引用对象的实际类型最合适的那个类的方法。我们已经假设 obj 的实际类型是 Cat,它是 Animal 的子类,如果 Cat 中定义了 func(...