Java 超类的构造函数

Java 超类的构造函数,java,inheritance,constructor,super,Java,Inheritance,Constructor,Super,您好,我正在尝试从一个类实例化一个对象,该类扩展了它的超类和它的构造函数super,但是在实例化对象的构造函数中Java接受参数时遇到了困难,有人能帮我吗,谢谢!节目如下: public class Box { double width; double height; double depth; Box(Box ob) { this.width=ob.width; this.height=ob.h

您好,我正在尝试从一个类实例化一个对象,该类扩展了它的超类和它的构造函数super,但是在实例化对象的构造函数中Java接受参数时遇到了困难,有人能帮我吗,谢谢!节目如下:

public class Box {

    double width;
    double height;
    double depth;

    Box(Box ob)
        {
            this.width=ob.width;
            this.height=ob.height;
            this.depth=ob.depth;           
        }
    Box(double width, double height, double depth)
        {
            this.width=width;
            this.height=height;
            this.depth=depth;
        }

    double volume()
        {
            return width * height * depth;
        }


}


public class BoxWeight extends Box{

    double weight;
    BoxWeight(BoxWeight object)
        {
            super(object);
            this.weight=object.weight;
        }
    BoxWeight(double w, double h, double d, double wei)
        {

            super(w,h,d);
            this.weight=wei;
        }

}


public class Proba {


    public static void main(String[] args) {

        BoxWeight myBox1 = new BoxWeight();
        BoxWeight myBox2 = new BoxWeight();

    }
}

现在,每当我尝试将参数传递到主类中的BoxWeight()构造函数时,就会出现错误。

您正在为
BoxWeight
定义两个构造函数

BoxWeight(BoxWeight object)
BoxWeight(double w, double h, double d, double wei)
但是试着使用一个没有参数的

BoxWeight myBox1 = new BoxWeight();
因此,在像这样构造对象时,您需要提供另一个实例:

BoxWeight myBox1 = new BoxWeight(someOtherBox);
或者使用具有单独定义值的构造函数:

BoxWeight myBox1 = new BoxWeight(myWidth, myHeight, myDepth, myWeight);
或者为
BoxWeight
定义一个无参数构造函数,该构造函数调用一个现有的
Box
构造函数或另一个新创建的无参数构造函数

BoxWeight() {
    super(...)
}

如果您习惯于调用无参数构造函数而不实际定义构造函数,这是因为Java提供了一个默认构造函数,但前提是您自己不定义任何构造函数。有关详细信息,请参阅。

您没有将任何参数传递到main()中的构造函数中???!请澄清。也请阅读此内容-好的,每当我尝试将参数传递到构造函数中或将其留空(因为它们现在是Net Beans)时,都会抛出一个错误,在Proba类的最后两行代码的行中显示两个红色圆圈:BoxWeight myBox1=new BoxWeight();BoxWeight myBox2=新的BoxWeight();没有为BoxWeight()构造函数BoxWeight找到合适的构造函数。BoxWeight(double,double,double,double)不适用(实际参数列表和形式参数列表长度不同)构造函数BoxWeight。BoxWeight(BoxWeight)不适用(实际参数列表和形式参数列表长度不同)以及,你刚刚回答了你自己的问题!你没有默认构造函数。你说我没有默认构造函数是什么意思?我有两个BoxWeight类的构造函数?如果我错了,请在空白处填写。哦,我听到了,非常感谢你,先生。如果你的问题解决了,请将对你帮助最大的答案标记为已被接受。是的,我知道,如果我自己不在问题的某个地方构建构造函数,Java在默认情况下为我创建了一个无参数构造函数,但我不知道在创建其他几个参数化构造函数时应该设置一个无参数构造函数。非常感谢。