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

看板java作者 (enter036)時間9年前 (2015/11/01 00:19), 9年前編輯推噓0(003)
留言3則, 1人參與, 最新討論串1/1
※ [本文轉錄自 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> -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.254.46.51 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1446172150.A.9E3.html ※ 編輯: enter036 (122.254.44.80), 11/01/2015 00:30:34

11/01 01:15, , 1F
類別只是類別,非static的欄位沒有配置記憶體
11/01 01:15, 1F

11/01 01:15, , 2F
是在new物件的時候配的,類別有多少欄位就配多少(含繼承的)
11/01 01:15, 2F

11/01 01:16, , 3F
然後存取權限是存取權限,跟記憶體配置沒關
11/01 01:16, 3F
文章代碼(AID): #1MDEdyW2 (java)
文章代碼(AID): #1MDEdyW2 (java)