Fw: [問題] 類別的繼承與記憶體配置

作者: enter036 (enter036)   2015-11-01 00:19:06
※ [本文轉錄自 Programming 看板 #1MCjNsdZ ]
作者: enter036 (enter036) 看板: Programming
標題: [請益] 類別的繼承與記憶體配置
時間: Fri Oct 30 10:29:08 2015
大家好,大欸賀,胎嘎賀,
這邊想請教一個關於類別與繼承上記憶體配置的問題問題。
我現在手邊的書是INTRODUCTION TO JAVA(Y. DANIEL),
在讀到繼承章節時,有提到data/methods 會因為能見度而決定存取權限,
而在繼承時,記憶體的配置讓我很想不透,範例如下(均在same pkt):
public class C1(){
public int x;
protected int y;
int z;
private int u;
protected void m(){}
}
public class C3 extends C1{
can access x;
can access y;
can access z;
cannot access u;
can invoke m();
}
請問C1跟C3的所有資料是否是使用同一塊記憶體呢?
就我的理解是,C1跟C3若是規劃不同的記憶體,
那這樣好像就不用有存取上的問題,因為是獨立的配置@@
但若是配置同個記憶體,那當有其他類別繼承C1時,
data field不會亂掉嗎? 被複寫掉之類的。
另外同範例內還有一個非繼承的類別C2,裡面直接new個obj o,
public class C2{
C1 o = new C1();
can access o.x;
can access o.y;
can access o.z;
can not access o.u;
can invoke o.m();
}
在obj生成的話,也是在獨立劃分一個區塊給o的所有資料使用嗎?
觀念有點混亂也很糟,還有勞前輩指教了<0>
作者: ssccg (23)   2015-11-01 01:15:00
類別只是類別,非static的欄位沒有配置記憶體是在new物件的時候配的,類別有多少欄位就配多少(含繼承的)然後存取權限是存取權限,跟記憶體配置沒關

Links booklink

Contact Us: admin [ a t ] ucptt.com