[爆卦]java繼承是什麼?優點缺點精華區懶人包

為什麼這篇java繼承鄉民發文收入到精華區:因為在java繼承這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者pluseus (回憶真美麗)看板java標題[問題] 一個簡單的變數繼承問題時間Fri Apr...



大家好,不好意思,我想請問一下一個簡單的變數繼承問題
我想要做一個測試確認
就是父類別原本有的類別變數,假如是var1
子類別繼承後,子類別的物件obj內,應該有var1、super.var1兩塊獨立的變數吧?

但是為什麼我做了以下測試
我發現我改了obj內的super.var1,obj內的var也會一起改變?
難道是var1、super.var1其實是同一個變數嗎?

萬分感謝!


source code:

import java.lang.*;

public class class_130412
{
public static void main(String args[])
{
CB obj = new CB();
obj.show();
}
}

class CA
{
public int var1;
public CA()
{
System.out.println("父類別建構子建構中");
var1=10;
}
}


class CB extends CA // 子類別CB繼承自類別CA
{
public CB()
{
System.out.println("子類別建構子建構中");
var1=20;
super.var1=30;
}

public void show()
{
System.out.println("var1=" + var1);
System.out.println("super.var1=" + super.var1);
}
}


結果:

父類別建構子建構中
子類別建構子建構中
var1=30
super.var1=30


問題1:
為什麼super.var1=30
會一起動到var1的數值?

問題2:
如果我把super.var1=30註解掉
結果是

父類別建構子建構中
子類別建構子建構中
var1=20
super.var1=20

super.var1不應該是要維持同樣是10嗎?


謝謝指點!



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.113.229
※ 編輯: pluseus 來自: 140.109.113.229 (04/12 16:58)
LPH66:你講的只有當你在 CB 裡"也"宣告 int var1; 才成立 04/12 16:57
LPH66:而這個時候父類別的那個 var1 就只能經由 super.var1 存取 04/12 17:00
LPH66:如果沒有的話 在 CB 裡用 var1 用的就是父類別的那個變數 04/12 17:01
pluseus:嗯嗯 好像的確是 我在CB也宣告int var1 就成功分開來了 04/12 17:05
pluseus:所以在我的例子中var1和super.var1其實是同一個變數吧? 04/12 17:06
pluseus:謝謝一樓 ^^ 04/12 17:07
swpoker:要先弄清楚物件生成的流程喔~這樣你在設計會比較清楚 04/12 17:19

你可能也想看看

搜尋相關網站