標籤:cell div extends 隱式 調用 and blog dex 技術
1.運行 TestInherits.java 樣本,觀察輸出,注意總結父類與子類之間構造方法的調用關係修改Parent構造方法的代碼,顯式調用GrandParent的另一個建構函式,注意這句調用代碼是否是第一句,影響重大!
論 通過supper 調用的基類構造方法 必須是子類的構造方法中的第一個語句
參看ExplorationJDKSource.java樣本此樣本中定義了一個類A,它沒有任何成員:class A { }樣本直接輸出這個類所建立的對象參看ExplorationJDKSource.java樣本此樣本中定義了一個類A,它沒有任何成員:class A { }樣本直接輸出這個類所建立的對象
class檔案彙編可得
前面執行個體中main方法調用的是
public void println(Object x),這一方法內部調用了String類的valueOf方法
public String toString(){
return getClass().getName()+"@"+Integer.toHexString(hashCode);
}
hashCode方法是本地方法,有jvm設計者實現
我們來看一段代碼(樣本Fruit.java ):public class Fruit{ public String toString() { return "Fruit toString."; } public static void main(String args[]) { Fruit f=new Fruit(); System.out.println("f="+f); // System.out.println("f="+f.toString()); }}注意最後一句,一個字串和一個對象“相加”,得到以下結果:
結論在“+”運算中,當任何一個對象與一個String對象,串連時,
會隱式地調用其toString()方法,預設情況下,此方法返回“類名 @ + hashCode”。為了返回有意義的
資訊
,子類可以重寫toString()zz
| 1 |
在“+”運算中,當任何一個對象與一個String對象,串連時,會隱式地調用其toString()方法,預設情況下,<br>此方法返回“類名 @ + hashCode”。為了返回有意義的資訊,子類可以重寫toString()方法。 |
| 123 |
方法覆蓋要求子類與父類的方法一模一樣,否則就是方法重載(overload)!請自行編寫代碼測試以下特性:在子類中,若要調用父類中被覆蓋的方法,可以使用super關鍵字。 |
class fulei{
public int jianfa(int a,int b){
int s;
s=a-b;
return s;
}
}
class add1 extends fulei{
public int jianfa(int a,int b){System.out.println("調用父類的"+super.jianfa(3,4));
int s;
s=a-b;
return s;
}
}
public class TestInherits {
public static void main(String args[]) {
add1 c = new add1();
System.out.println("調用子類的"+c.jianfa(3,4));
}
}
JAVA動手動腦