父类(超类)和子类的疑惑
如果在父类的内部使用子类的实例会有什么后果呢?!
又或者反过来,在子类的内部使用父类的实例又会有什么影响呢!?
如:
class SuperClass{
private SubClass instance = new SubClass();
........
}
class SubClass extends SuperClass {
private SuperClass instance = new SuperClass();
.........
}
偶尔想到这个问题,不知道这样在逻辑上会是什么后果!?
[解决办法]
你在父类里定义了private 类型,不可以那么用吧
[解决办法]
子类不继承父类的private类型.也没去调用他所以没什么关系吧.
[解决办法]
应该会堆栈溢出
[解决办法]
1).派生类中
class SuperClass{
int j = 0; //1.1 3.1
SuperClass(){};//2.1 3.2
}
class SubClass extends SuperClass{
int i = 0; //1.2
SubClass(){}; //2.2
SuperClass sc = new SuperClass(); //3.3
}
...
new SubClass(); // ===> 1.1-> 1.2-> 2.1-> 2.2-> 3.1-> 3.2-> 3.3
2).基类中
class SuperClass{
int j = 0;
SuperClass(){};
SubClass sc = new SubClass(); //1.1 StackOverflowError 1.1-> 1.2-> 1.1-> 1.2-> 1.1....
} //此例初始化第2阶段
class SubClass extends SuperClass{
int i = 0;
SubClass(){}; /1.2
}
不知道理解对否
[解决办法]
首先子类的内部可以使用父类的实例,但是父类的内部使用子类的实例会有些限制,搂主所写的子类的实例初始化发生在父类实例构造过程中,所以会发生递归调用的情形,如果将子类的实例化过程不要放到父类的构造过程中,应当是可以的。
[解决办法]
> > > 应该会堆栈溢出
同意