我有简单的课程:
public class Points {
private int x = 0;
public void setX(int x) {
this.x = x;
}
}
我制作了另一个有点数字段的课程:
public class Curve {
private Points p;
public void setX(int x) {
p.setX(x);
}
}
因此,类Curve中的setX(int x)方法用于更改Points中私有字段x的值。
最后我以这种方式使用这种方法:
public class UseComposition {
public static void main(String[] args) {
// TODO Auto-generated method stub
Curve c = new Curve();
c.setX(1);
}
}
我认为,这段代码加倍:如果我在Points中更改方法名称,我还必须在类Curve中更改方法setX。 还有其他方法可以解决这样的任务吗? 改变这样的私人价值可能根本不是一个好主意。请帮忙。
答案 0 :(得分:2)
我认为,这段代码加倍:如果我在Points中更改方法名称,我还必须在类Curve中更改方法setX。
不,不。如果需要,您可以 ,但这两种方法是独立的。您根本没有 来公开Points
中的所有方法,实际上大部分时间都是您不想要的。您应该只公开与您正在编写的类相关的方法。 有时他们可能只是通过单个字段委派下来,但通常他们会涉及多个字段,或者您需要做其他事情以及调用委托方法。
答案 1 :(得分:0)
您的代码是正确的。在继续工作之前,请仔细考虑名称,你就不会有麻烦...
或者,您可以考虑创建interface
,以实现与他人共享的基本功能。这样,如果您在界面上添加/更改/删除内容,classes
实施的interface
将无法编译,并向您清楚地显示,例如:
Missing Interface method: "setNewX"
...
答案 2 :(得分:0)
还有另一种方法可以做到这一点。您可以通过以下公共获取者访问 p :
public class Curve {
private Points p;
public void setX(int x) {
p.setX(x);
}
public Points getPoints(){
return p;
}
}
在此之后,您可以根据需要更改Points类,而无需更改Points和Curve的方法名称。您只需访问 p ,如下所示。
公共类UseComposition {
public static void main(String[] args) {
// TODO Auto-generated method stub
Curve c = new Curve();
Points p = c.getPoints();
p.setX(1);
}
}
答案 3 :(得分:0)
在曲线类中使用getter
public Points getPoints() {
return p;
}
然后在main方法中访问X属性,如下所示:
Curve c = new Curve();
Points p = c.getPoints();
p.setX(1);
答案 4 :(得分:0)
您可以将属性用作Point
类
public class Point {
private int x = 0;
public void setX(int x) {
this.x = x;
}
}
public class Curve {
Point cenetrPoint;
public void setCenterPoint(Point p) {
this.cenetrPoint = p;
}
}