java基礎 多型 構造器內部的多型方法行為

2021-06-18 20:36:06 字數 685 閱讀 4373

package polymorphism;

class glyph

void draw()

glyph()

}class roundglyph extends glyph

void draw()

}public class polyconstructor

}

結果:static glyph

glyph before draw

roundglyph.radius=0

glyph after draw

roundglyph.roundglyph().radius=5

-----------------

glyph before draw

glyph draw

glyph after draw

結果分析:

我們發現當glyoh的構造器呼叫draw()方法時,radius不是預設的1,而是0。

初始化實際過程如下:

1.在其他任何事情反生之前,講分配給物件的儲存空間初始化成二進位制的零。

2.如前所述那樣呼叫基類構造器,此時,呼叫被覆蓋後的draw()方法,由於步驟1的緣故,我們此時發現radius的值為0。

3.按照宣告的順序呼叫成員的初始化方法。

4.呼叫匯出類的構造主體。

java構造器內部的多型方法

我們知道,動態繫結的呼叫是在執行時才決定的,物件無法知道到底呼叫的是哪個類的方法。當我們在構造器中呼叫動態繫結的方法,就會用到該方法被覆蓋之後的定義。但是這種呼叫的效果難以預計,因為被覆蓋的方法在物件被完全構造之前就會被呼叫。我們先來看看下面這段 class base public void tel...

構造器內部的多型方法

提出問題 已知b類繼承於a類,且b類複寫了a類中公共的非靜態的function 方法。且在a類的構造器中,呼叫function 方法。我們知道,在建立b類例項物件的時候,會呼叫a類的構造器方法。那麼,呼叫的是b類例項物件的function 方法,還是a類例項的function 方法?首先,看乙個例項...

構造器內部的多型方法行為

package com.lu.test import static lu.utils.print.在任何構造器內部,整個物件可能只是部分形成 我們只知道基類物件已經進行初始化。如果構造器只是在構建物件過程中的乙個步驟,並且該物件所屬的類是從這個構造器所屬 的類匯出的,那麼匯出部分在當前構造器正在被呼...