class A
{
class B b;
B b = new b();
}
class B extends A
{
b.function();
}
这里B可以使用在A?
中创建的相同对象答案 0 :(得分:0)
以下是您的计划:
class C {
public String cvariable;
public void cfunction(){
System.out.println("string");
}
}
class A {
public C c1;
public void funtiona(){
c1 = new C();
}
}
public class B extends A {
public void functionb(){
c1.cfunction();
}
public static void main(String args[]){
B b = new B();
b.functionb();
}
}
正确抛出空指针异常。它按如下方式进行:
functionb()
functionb()
中,您使用c1调用cfunction()
,但c1只是C类型的变量(尚未初始化),其中包含null。所以得到空指针异常。答案 1 :(得分:0)
请参阅以下程序,它将抛出java.lang.StackOverflowError
class B{
A a = new A();
public B(){
System.out.println(a.hashCode());
}
}
public class A extends B{
public void show(){
a.hashCode();
}
public static void main(String[] args){
new A().show();
}
}
这是因为程序进入无限循环,在创建子类对象之前,它调用父类构造函数,而在父类中,对于哈希代码,它再次调用子类构造函数。所以无限循环