我在 Java 中练习继承,但卡在了子类中的 getter 方法上。 这是 Point 类:
package OOP.LinePoint;
public class Point {
private int x;
private int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
public String toString() {
return "Point: (" + x + "," + y + ")";
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
这里是 LineSub 类:
package OOP.LinePoint;
public class LineSub extends Point{
Point end;
public LineSub(int beginX, int beginY, int endX, int endY){
super(beginX, beginY);
this.end = new Point(endX, endY);
}
public LineSub(Point begin, Point end){
super(begin.getX(),begin.getY());
this.end = end;
}
@Override
public String toString() {
return "LineSub [begin=" + "(" + super.getX() +"," + super.getY() +") " + "end=" + end + "]";
}
public Point getEnd() {
return end;
}
public void setEnd(Point end) {
this.end = end;
}
public Point getBegin(){
}
public void setBegin(Point begin){
setX(begin.getX());
setY(begin.getY());
}
}
我的问题:
1) toString() 方法。我正在尝试打印两点(开始和结束)。如您所见,结束很简单,但开始点是继承的,我知道我应该输入什么。我获得 x 和 y 点的方式是有效的,但对我来说,这似乎是一种蹩脚的方式。当然有更好的方法,你能帮我吗?
2) 点getBegin()方法。我试过:
public Point getBegin(){
return (Point)this;
}//Not working(getting whole Point object)
和
public Point getBegin(){
return new Point(getX(), getY());
}//Very noob way
我没有别的想法,请借给我你的智慧。
最佳答案
恕我直言,这不是继承的好用法。您的案件不是继承的有效候选人。
只有符合 is-A
关系的类才是继承的良好候选者。
Line
不是Point
,而是点的集合(在您的例子中,它是 being 和 end)。
因此,它是一个很好的组合候选者 (Has-A
)。
一行有
一个开始点和一个结束点。您同时使用继承(对于起点)和组合(对于终点)来重用代码。
坚持组合,Line类有两点(begin和end)。
关于java - 继承 getter 和 toString() - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559666/