易錯代碼合集
文章目錄
- 易錯代碼合集
-
- 一 多态類型
-
- 1
- 2
- 3
一 多态類型
1
- 代碼
public class Test{ public static void main(String[] args){ Base b1=new Base(); Base b2=new Sub(); } } class Base{ Base(){ method(100); } public void method(int i){ System.out.println("base:"+i); } } class Sub extends Base{ Sub(){ super.method(i); } public void method(int j){ System.out.println("sub:"+j); } }
- 輸出答案
- base:100
- sub:100
- base:70
- 總結
- new 子類,在加載其父類時,如果父類所調用的自身的方法被其子類所重寫了,那麼此時調用的是子類所重寫的方法
2
- 代碼
public class Test{ public static void main(String[] args){ A c=new B(); c.setA(5); System.out.println(c.getA()); } } class A{ private int a; public void setA(int a){ this.a=a; } public void getA(){ return a; } } class B extends A{ private int a; public void setA(int a){ this.a=a; } }
- 輸出答案
- 總結
- getter 和 setter 也算在了重寫的範圍内
3
- 代碼
public class Test{ public static void main(String[] args){ Fu f=new Zi(); Fu z=new Zi(); System.out.println(f.num); System.out.println(z.num); f.show(); z.show(); } } class Fu{ int num=4; void show(){ System.out.println("show Fu"); } } class Zi extends Fu{ int num=5; void show(){ System.out.println("show Zi"); } }
- 輸出答案
- 4
- 5
- show Zi
- show Zi
- 總結
- 以下結論成立在子類對象指向父類引用的情況下(保險起見,防止意外情況)
- 隻能通路父類的屬性
- 隻能通路父類沒被重寫的方法
- 隻能通路子類已經重寫父類的方法
- 資料
資料 Java子類父類屬性的覆寫(轉載)