構造器中呼叫動態繫結的方法
構造器中呼叫動態繫結的方法
若在構造器中呼叫動態繫結的方法,不會呼叫父類的方法,而是優先呼叫子類中覆蓋的繫結方法。
如果此時在方法中使用成員變數可能會造成重大錯誤。
class Glyph {
void draw() {
System.out.println("G() in draw");
}
Glyph() {
System.out.println("G() before draw");
draw();
System.out.println("G() after draw");
}
}
class RoundGlyyph extends Glyph {
int r = 1;
RoundGlyyph(int r) {
this.r = r;
System.out.println("R(), r = "+r);
}
void draw() {
System.out.println("R() in draw, r = "+r);
}
}
public class extendTest {
@Test
void initExtendsTest() {
new RoundGlyyph(5);
}
}
此處在僅僅分配控制程式碼時物件對應的儲存空間為二進位制全0。
而在父類Glyph構造器中呼叫了子類RoundGlyph的方法draw(),此時子類的成員物件還未初始化,得到的半徑r為二進位制全0,不是初始化的1,更不是構造器設定的5。
所以要注意構造器內能安全使用的方法在基礎類中必須宣告為final。
相關文章
- java中的靜態繫結與動態繫結Java
- C++的動態繫結和靜態繫結C++
- 理解靜態繫結與動態繫結
- VS中呼叫DLL動態庫的方法
- Python中動態類和動態方法的建立與呼叫Python
- Effective Java - 靜態方法與構造器Java
- 關於動態字串的繫結字串
- Java--構造器和構造方法Java構造方法
- JAVA動態繫結淺析Java
- 三、動態繫結屬性
- 動態生成的html元素繫結click事件HTML事件
- vue 動態繫結 v-modelVue
- 動態繫結 input v-model
- Vue select 繫結動態變數Vue變數
- Vue 動態繫結CSS樣式VueCSS
- 小解惑:查詢構造器與集合中的 get 方法
- 介面的繫結方案和動態SQLSQL
- class 和 style 資料動態繫結
- 域名繫結動態IP實戰案例
- 後期靜態繫結在PHP中的使用PHP
- JQuery on()方法繫結動態元素的點選事件無響應的解決辦法jQuery事件
- 動態連結的相關結構
- 繼承中構造方法的特點繼承構造方法
- MFC之動態呼叫自己寫的類庫中的類的成員方法
- jQuery實現DOM元素事件動態繫結jQuery事件
- Java中構造方法,構造程式碼塊和靜態程式碼塊執行順序詳解Java構造方法
- 理解 sole() 查詢構造器方法
- 14 #### 方法分類與使用場景(繫結、靜態、類方法)
- python-物件導向(繫結方法與非繫結方法)Python物件
- vue中v-on繫結多個方法Vue
- 構造方法構造方法
- 在 Vue 中如何避免在動態繫結 類 出現空 類 的情況?Vue
- Vue 框架-05-動態繫結 css 樣式Vue框架CSS
- SpringMVC(三)處理器方法形參繫結(繫結陣列、集合)、異常處理器、controller方法返回值SpringMVC陣列Controller
- CSS的動畫的基礎概念定義/呼叫/繫結複習必備CSS動畫
- JS中動態新增元素並繫結事件,造成程式重複執行JS事件
- C#中為什麼會出現空靜態構造方法的寫法C#構造方法
- laravel 在一個控制器的方法中呼叫其他控制器中的方法Laravel