Java學習筆記

NO IMAGE

1. thissuper異同

  • 相同: 都可以調用構造方法,this調用本類的其他構造方法,super調用父類構造方法
  • 不同: this可以調用隱性參數,super可以調用超累方法
  • 不同: super不是對象的引用,不能賦值給變量。只是指示編譯器調用超類方法的特殊關鍵字

2. ArrayStoreException

有類Programmer繼承自Person

public class Person {……}
public class Programmer extends Person {
……
private long income;
public long getIncome() {
return income;
}
public void setIncome(long income) {
this.income = income;
}
……
}

又有如下操作:

Programmer[] programmers = new Programmer[10];
Person[] human = programmers;
human[0] = new Person(true, "xxx", "333");
programmers[0].setIncome(10000);

這段代碼在編輯器中不會報錯,看起來運行到最後一步,會使一個Person實例執行屬於子類ProgrammersetIncome(long)方法。
實際並不會,編譯器在編譯到第三行時,就會拋出Exception in thread "main" java.lang.ArrayStoreException: Person

這說明在JVM中,數組要記錄創建時的類型,保證只接受類型兼容的實例。

相關文章

【Spring5】響應式Web框架前瞻

面向開發的測試技術(三):Web自動化測試

面向開發的測試技術(二):性能測試

面向開發的測試技術(一):Mock