Java 如何从包含两个初始对象参数的扩展类创建对象的构造函数?
我是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()未定义
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
。。。问你问题的一个更清楚的方式是“如何创建依赖于其超类的子类?”