子类构造函数/定义(绝对初学者)

时间:2018-04-21 15:15:19

标签: java

我刚开始学习Java-8并使用Netbeans。现在我只是编码来理解,但最终我有个人想要编码的项目。

我试图理解我做错了什么因为Netbeans标记我的代码有错误但我认为这只是因为我不完全理解如何创建子类。

以下是我要做的事情:

public class Point3d {
    public double point_x=0;
    public double point_y=0;
    public double point_z=0;

    Point3d(double x, double y, double z)
    {
        this.point_x=x;
        this.point_y=y;
        this.point_z=z;
    }

}

public class Center_of_gravity extends Point3d {

    Center_of_gravity(double x, double y, double z)
    {
        this.point_x=x;
        this.point_y=y;
        this.point_z=z;
    }

}

这是我尝试定义没有方法的基本类(尚未)。因为我想要创建的一些类必须是其他主类的子类。我需要了解它是如何工作的,并能够成功编写方法等等。一旦我能够编写类和子类,我就可以开始编写代码了。

2 个答案:

答案 0 :(得分:2)

您必须添加父构造函数,如:

public class Center_of_gravity extends Point3d {
    Center_of_gravity(double x, double y, double z)
    {
        super(x,y,z);
    }
}

它会初始化你在(Point,d中)写的(x,y,z)。

如果您不希望手动使用父构造函数,则必须在Point3d中定义默认父构造函数:

Point3d() {
    //default empty constructor
}

在这种情况下,你可以写

Center_of_gravity(double x, double y, double z)
{
    //any code
}

答案 1 :(得分:0)

您没有在Set-ADUser -Identity $username -Replace @{HomeDirectory=$homeDir} Set-ADUser -Identity $username -Replace @{HomeDrive=$homeDrive} 构造函数中调用super,因此编译器正在尝试插入对Center_of_gravity的无参数构造函数的调用,而Point3d并非如此。存在。见,例如, this