变量声明为接口类型,有什么好处!!
//A实现IA接口public class A implements IA { void m() {}}//A1继承Apublic class A1 extends A { void aaaa1(){}}//A2继承Apublic class A2 extends A { void aaaa2(){}}//包含有A1、A2这些IA的实现类的一个包租婆类public class BaoZuPo { private IA a1; private IA a2; …… //get set 方法略}//经常遇到的情况:public class Test { void test() { A1 a1 = (A1)BaoZuPo.getA1(); a1.aaaa1(); //类似的 A2 a2 = (A2)BaoZuPo.getA2(); a2.aaaa2(); }}//A实现IA接口public class A implements IA { void m() {}}//A1继承Apublic class A1 extends A { void aaaa1(){}}//A2继承Apublic class A2 extends A { void aaaa2(){}}//包含有A1、A2这些IA的实现类的一个包租婆类public class BaoZuPo { private IA a1; private IA a2; …… //get set 方法略}//经常遇到的情况:public class Test { void test() { IA a1 = BaoZuPo.getA1(); a1.m(); //这里才是意义所在 ((A1)a1).aaaa1(); //这里是调用子类自己的方法,体现不出意义 //类似的 IA a2 = BaoZuPo.getA2(); a2.m(); //这里才是意义所谓 ((A2)a2).aaaa2(); //这里是调用子类自己的方法,体现不出意义 }}