简体   繁体   English

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

[英]In Java, Does Object of some class created in superclass can be used in subclass

class A
{

    class B b;

    B b = new b();
}

class B extends A

{

    b.function();

}

Here can B use the same object created in A?这里 B 可以使用在 A 中创建的相同对象吗?

Following is your program:以下是你的程序:

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

It is correctly throwing null pointer exception.它正确地抛出空指针异常。 It proceed as follows:它进行如下:

  • In the main method you call functionb()在 main 方法中调用functionb()
  • In functionb() you call cfunction() with c1, but c1 is just an variable of type C(as not initialized yet) which contains null.functionb()您使用c1 调用cfunction() ,但c1 只是一个包含空值的C 类型变量(尚未初始化)。 So getting null pointer exception.所以得到空指针异常。

See the following program, It will throw java.lang.StackOverflowError看下面的程序,会抛出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();
    }
}

This is because program goes in the infinite loop, As before creating a child class object it calls the parent class constructor and in parent class for hash code it again calls the child class constructor.这是因为程序进入无限循环,在创建子类对象之前,它调用父类构造函数,在父类中再次调用子类构造函数以获取哈希码。 so an infinite loop所以无限循环

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 创建派生类的对象时是否创建了超类的对象? - Does the object of superclass created when object of derived class is created? java子类是否使用相同的超类字段对象 - Does java subclass use the same superclass field object 在java中,我们可以将超类Object传递给子类引用吗? - In java , can we pass superclass Object to subclass reference? 为什么子类引用不能在java中保存超类对象 - why subclass reference can't hold superclass object in java 如何在java中声明可以存储超类和子类对象的数组? - How to declare array that can store superclass and subclass object in java? Java超类调用在子类中创建的方法 - Java superclass calling a method created in a subclass 您可以从一个单独的类中调用该类中的方法吗,该类将所述SuperClass的子类作为对象? - Can you call a method in the SuperClass from a separate class that has the SubClass of said SuperClass as an object? 在继承中,当为子类创建对象时,是否还为其超类创建了一个对象? - In inheritance, when an object is created for subclass, is an object also created for its superclass? Java:对超类对象上的子类的受保护访问限制 - Java : Protected access restriction for subclass on superclass object 将超类对象作为参数传递给子类构造函数(java) - Passing superclass object as parameter to subclass constructor (java)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM