Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从包含两个初始对象参数的扩展类创建对象的构造函数?_Java_Object_Extends - Fatal编程技术网

Java 如何从包含两个初始对象参数的扩展类创建对象的构造函数?

Java 如何从包含两个初始对象参数的扩展类创建对象的构造函数?,java,object,extends,Java,Object,Extends,我是Java新手,我有一个简单的问题: 我有以下课堂要点: public class Point { private int yAxis; private int xAxis; public Point (int x, int y) { xAxis = x; yAxis = y; } } 我创建了一个扩展类点的新类。我希望我的新类将两个对象作为参数。我编写了以下代码,但收到错误“隐式超级构造函数MyPoint()未定义

我是Java新手,我有一个简单的问题:

我有以下课堂要点:

public class Point {

    private int yAxis;
    private int xAxis;

    public Point (int x, int y)
    {
        xAxis = x;
        yAxis = y;
    }
}
我创建了一个扩展类点的新类。我希望我的新类将两个对象作为参数。我编写了以下代码,但收到错误“隐式超级构造函数MyPoint()未定义。必须显式调用另一个构造函数”。我怎样才能解决这个问题

提前谢谢

public class Rectangle extends Point {

    private int length1;
    private int height1;

    public Rectangle(int x, int y, int l, int h) {
        super(x, y);
        l = length1;
        h = height1;
    }

    public Rectangle(Point topLeft, Point bottonRight) {


    }
}

您不应该仅仅因为
矩形
类提到了
点,就使用
扩展点
extends
关键字用于声明is-a关系。问问你自己,长方形是一个点吗

如果您试图说“这个类将使用Point类”,您可能应该导入
Point


(通过删除
扩展点来修复错误)

其他人提到不应使用继承。我完全同意。但我发现有效的Java在这类问题上是一个很好的参考,我认为它值得自己给出答案。请参阅以获得更深入的讨论。

我可以在不删除exteds点的情况下解决此问题吗?可以(但这会很愚蠢:)因为
矩形
然后是
,您需要为
构造函数提供参数(
x
y
)。您可以通过在第二个
矩形
构造函数的顶部添加例如
super(0,0)
来实现此目的。@voimak:您还可以使用
topLeft
点的x和y属性调用超级构造函数:
super(topLeft.getX(),topLeft.getY())
但这只是当你真的想把一个矩形当作一个点的时候。那么右下角点呢,我必须做同样的super(bottomRight.getX(),bottomRight.getY())?谢谢我真的建议你也读整本书!仅供参考:将字段值指定给构造函数参数值是没有意义的。例如,您编写:
l=length1
。。。问你问题的一个更清楚的方式是“如何创建依赖于其超类的子类?”