在Java中,在超类中创建的某些类的Object是否可以在子类中使用

时间:2015-12-23 05:07:48

标签: java inheritance

class A
{

    class B b;

    B b = new b();
}

class B extends A

{

    b.function();

}

这里B可以使用在A?

中创建的相同对象

2 个答案:

答案 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();
    }
}

这是因为程序进入无限循环,在创建子类对象之前,它调用父类构造函数,而在父类中,对于哈希代码,它再次调用子类构造函数。所以无限循环