Pan*_*kaj 6 java oop abstract-class abstract
abstract class A {
private int a;
public A(int x) {
a = x;
}
public int getA() {
return a;
}
}
class B extends A {
public B(int x) {
super(x);
}
}
class TestB {
public static void main(String args[]) {
B b = new B(5);
System.out.println(b.getA());
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当我说B b=new B(5);超级构造函数被调用并且私有实例变量被初始化为5.所以当我说getA()on class B的对象被b它引用时返回5.作为实例变量a的class A是私人它不会被继承class B.那么在哪里a创建实例变量(在堆上).如果它是一个public它将成为class BHeap实例的一部分.也是class A一个abstarct类,因此无法实例化.
实例变量的分配无论是私有,公共,超类还是抽象超类都没有区别
通常序列将是类似的
B.class对象Object实例变量块(包括GC的辅助字段,同步监视器,......)A实例变量块(仅a在这种情况下)B实例变量块(在本例中为none)但是JVM的每个实现都可以自由选择如何分配它们
和访问控制由编译器和JVM强制执行
| 归档时间: |
|
| 查看次数: |
4451 次 |
| 最近记录: |