子類繼承父類後的相同變數的值的變化和記憶體分布

2021-08-31 16:08:10 字數 564 閱讀 7276

先來看乙個例子,假設我們現在有a類

public class a

public string getname_1()

public void setname_1(string name)

}

b類繼承a類

public class b extends a

public void setname_2(string name)

public static void main(string args)

}

執行結果如下

下面我們應該就能明白,子類(b)例項化的時候會有兩塊name資訊,一塊繼承自父類(a),乙個是其自身所擁有的,只不過在方法同名(getname)時優先選擇其自身的屬性,下圖詳細說明:

子類繼承父類的成員變數

1 子類可以繼承父類的成員變數 只能繼承public 和protected,不能private 2 子類拿到的父類的成員變數值是初始化的值。3 如下面classb繼承classa,只能拿到初始化的a的值。int classa a 0 int main class classa include std...

子類繼承父類的變數和父類原有變數的關係

做專案的時候錯認為在子類中修改從父類繼續下來的變數值,會影響到其他繼承該變數的子類,實際上不是的,每個繼承了這個變數的子類,相當於拷貝了乙份變數,對變數的修改影響也僅限於自身,不會影響到父類的變數值,更不會影響到其他子類對應的變數值。特意寫的demo驗證下 父類 public abstract cl...

父類子類定義相同的變數名

今天遇到了乙個很有意思的問題,父類和子類都定義了乙個同名變數,宣告乙個父類型別a指向子類例項時,a.變數 父類的值 public class father public father public class sonextends father override public intgeti pub...