「當類的例項方法比例項建構函式先執行」

2022-02-07 11:36:12 字數 886 閱讀 8717

繼承+多型:

code

class

test

//可以除錯一下走走流程

}abstract

class

father

public

virtual

void

print()

//多型,不會被執行到

}class

son : father

public

override

void

print()

//執行結果:in class son: a=10 b=1

}class

g : son

}rt, 類son 中的print 方法在son 類的建構函式體執行之前被執行,

這個情況(繼承+多型)在使用的時候是不是有些注意點。

有點費解,大家談談看法。

下面是幾條關於類例項化的注意點:

1 類中的static 成員只會被例項化一次;

2 當乙個類被訪問(例項化或被訪問靜態成員)時,就會對staitic 成員完成例項化(除非靜態函式呼叫過程中,又呼叫了其他類的靜態成員);

3 例項變數(靜態變數)的初始化總在例項建構函式(靜態建構函式)之前;

4 例項建構函式的呼叫順序:由繼承樹頂端向低端進行呼叫;

5 靜態建構函式的呼叫順序:被訪問順序(參照第2條);

6 子類會自動呼叫父類中的無參建構函式;若父類沒有無參建構函式,則子類必須使用base關鍵字顯式呼叫父類的有參建構函式;

7 子類會隱式獲得父類除建構函式與析構函式以外的所有成員(包括private成員);

8 父類的private成員在子類中也是存在的,但是無法訪問(需要通過基類中》=protected訪問許可權的方法、屬性等來訪問);

例項方法,構造方法和類方法小結

例項方法 可以通過類的例項呼叫物件的方法,也稱成員方法.構造方法的特點 方法名與類名相同。沒有返回值。沒有return,沒有void 不能被除訪問修飾符外的任何修飾符訪問。不能被子類繼承。父級的構造方法不能被子類呼叫,可以通過super語句呼叫父類的構造方法,加入在子類的構造方法中有super語句,...

C 類的建構函式詳解及例項

c 類的建構函式 預設建構函式 如果你定義乙個類,並且沒有給它定義建構函式。編譯器會為這個類提供預設的建構函式。如果你提供了建構函式,編譯器是不會再為你提供乙個預設建構函式的。編譯器提供的預設建構函式什麼程式設計客棧都沒做。類的成員變數將遵守預設的初始化規則。編譯器提供的預設建構函式的初始化規則 在...

Java中構造方法 例項方法 類方法的區別

1.構造方法 構造方法負責物件的初始化工作,為例項變數賦予合適的初始值。必須滿足以下的語法規則 例如以下例子 public class sample public sample int x public int sample int x 1.1.預設構造方法 預設構造方法時沒有引數的構造方法,分為 ...