※ [本文转录自 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>