Java第二課——多型繼承
阿新 • • 發佈:2019-01-03
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();//wrong B 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, 15 a2.m1(); a2.m2(); a2.m3(); //putout:A'm1, B'm2, C'm3, 15 a3.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>