JAVA07 接口与继承
一? 動手實驗:繼承條件下的構造方法調(diào)用
1)源代碼
1 public class TestInherits { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 6 Child c = new Child(); 7 } 8 9 } 10 11 class GrandParent 12 { 13 public GrandParent() 14 { 15 System.out.println("GrandParent Created.Sting:"); 16 } 17 public GrandParent(String string) 18 { 19 System.out.println("GrandParent Created.Sting...:" + string); 20 } 21 } 22 23 class Parent extends GrandParent 24 { 25 public Parent() 26 { 27 super("mk"); 28 System.out.println("Parent Created"); 29 //super("Hello.GrandParent"); 30 } 31 } 32 33 class Child extends Parent 34 { 35 public Child() 36 { 37 System.out.println("Child Created"); 38 } 39 }
2)結(jié)果截圖:
(super不是父類構造方法的第一句)
(super是父類構造方法的第一句)
3)結(jié)果分析:
通過 super 調(diào)用基類構造方法,必須是子類構造方法中的第一個語句。
4)為什么子類的構造方法在運行之前,必須調(diào)用父類的構造方法?能不能反過來?為什么不能反過來?
不能反過來。子類是通過父類繼承過來的,所以子類有父類的屬性和方法,如果不調(diào)用父類的構造方法,不能初始化父類中定義的屬性,即不能給父類的屬性分配內(nèi)存空間?,如果父類的屬性沒有分配內(nèi)存空間,那么子類訪問父類的屬性,就會報錯。?
?
二??神奇的+號
1)源代碼:
1 public class Fruit 2 { 3 public String toString() 4 { 5 return "Fruit toString."; 6 } 7 8 public static void main(String args[]) 9 { 10 Fruit f=new Fruit(); 11 System.out.println("f="+f); 12 System.out.println("f="+f.toString()); 13 } 14 }
2)結(jié)果截圖:
3)結(jié)果分析:
注意倒數(shù)第二句,一個字串和一個對象“相加”,得到以下結(jié)果?
?Fruit類覆蓋了Object類的toString方法。在“+”運算中,當任何一個對象與一個String對象,連接時,會隱式地調(diào)用其toString()方法,默認情況下,此方法返回“類名 @ + hashCode”。
為了返回有意義的信息,子類可以重寫toString()方法。
?
三?動手動腦 在子類中,若要調(diào)用父類中被覆蓋的方法,可以使用super關鍵字?
1)源代碼:
1 public class fugaiSuper { 2 public static void main(String[] args) { 3 4 Child c = new Child(); 5 c.showMessage(); 6 } 7 } 8 9 class Parent 10 { 11 public void showMessage() 12 { 13 System.out.println("parent!"); 14 } 15 } 16 17 class Child extends Parent 18 { 19 public void showMessage() 20 { 21 System.out.println("child!"); 22 super.showMessage(); 23 } 24 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/gxt-/p/6049381.html
總結(jié)
以上是生活随笔為你收集整理的JAVA07 接口与继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6、UmbracoNewsSite:添加
- 下一篇: NOIP模拟题——B