0

OOP 初学者在这里...我有一个名为 Rectangle 的超类,它有一个接受 int height 和 int width 作为参数的构造函数。我的任务是创建一个改进的 Rectangle 子类,其中包括一个不需要参数的构造函数。

那么,我该如何在不弄乱超类的情况下做到这一点呢?

public class BetterRectangle extends Rectangle
{
    public BetterRectangle(int height, int width)
    {
        super(height,width);
    }

    public BetterRectangle()
    {
            width = 50;
            height = 50; 
    }
}

这给了我“隐式超级构造函数未定义”。显然我需要调用超类构造函数。但是用什么?只是随机值,稍后会被覆盖?

4

1 回答 1

6

尝试这个:

public BetterRectangle()
{
        super(50, 50); // Call the superclass constructor with 2 arguments 
}

或者:

public BetterRectangle()
{
        this(50, 50); // call the constructor with 2 arguments of BetterRectangle class.
}

您不能使用您的代码,因为构造函数中的第一行是对 super() 或 this() 的调用。如果没有调用 super() 或 this(),则调用是隐式的。您的代码相当于:

public BetterRectangle()
{
        super(); // Compile error: Call superclass constructor without arguments, and there is no such constructor in your superclass.
        width = 50;
        height = 50; 
}
于 2013-07-03T21:10:52.033 回答