Java第二课——多态继承

来源:互联网 发布:非同凡想网络 编辑:程序博客网 时间:2024/06/04 00:31

Java里的多态和重载与C++里的基本一致。 多态指的是子类可以对父类的方法进行重写,在程序运行时,根据具体的情况(引用对象具体的类型)来选择调用相应的方法。

《HeadFirst ——Java》中的一个练习题,很好的体现多态的关系。

<span style="font-size:18px;">package exercise;class A {int var = 6;void m1() {System.out.print("A'm1,  ");}void m2() {System.out.print("A'm2,  ");}void m3() {System.out.print("A'm3,  ");}}class B extends A {int var = 7; //void m2() {System.out.print("B'm2,  ");}}class C extends B {int var = 8;void m3() {System.out.print("C'm3,  ");System.out.print(var+7);}}class PolymorphicTest {public static void main(String arg[]) {A a = new A ();B b = new B();C c = new C();A a2 = new C();//C c2 = new B();//wrongB b2 = new B();A a3 = new B();a.m1();a.m2();a.m3();//putout:A'm1,  A'm2,  A'm3,b.m1();b.m2();b.m3();//putout:A'm1,  B'm2,  A'm3,c.m1();c.m2();c.m3();//putout:A'm1,  B'm2,  C'm3,  15a2.m1();a2.m2();a2.m3();//putout:A'm1,  B'm2,  C'm3,  15a3.m1();a3.m2();a3.m3();//A'm1,  B'm2,  A'm3,  b2.m1();b2.m2();b2.m3();// A'm1,  B'm2,  A'm3,         System.out.println("------");    //    A[] array_a = new A();//wrong, array just for primary data        ArrayList<A> array_a = new ArrayList<A>();        array_a.add(a);        array_a.add(b);        array_a.add(c);        for(A test:array_a) {            test.m1();            test.m2();            test.m3();        }        //A'm1,  A'm2,  A'm3,  A'm1,  B'm2,  A'm3,  A'm1,  B'm2,  C'm3,  15    } }</span>


0 0
原创粉丝点击