Java 一个班级通过作文分到另一个班级。如何更改它';什么是私人领域?
我有一节简单的课:Java 一个班级通过作文分到另一个班级。如何更改它';什么是私人领域?,java,class,Java,Class,我有一节简单的课: 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); } } 所以,类曲线中的setX(in
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);
}
}
所以,类曲线中的setX(intx)方法用于更改点中私有字段x的值
最后,我以如下方式使用此方法:
public class UseComposition {
public static void main(String[] args) {
// TODO Auto-generated method stub
Curve c = new Curve();
c.setX(1);
}
}
我认为,这段代码有一个双重含义:如果我在点中更改方法名称,我还必须在类曲线中更改方法setX。
有没有其他办法来解决这个问题?
也许改变这种私人价值观根本不是一个好主意。请帮忙
我认为,这段代码有一个双重含义:如果我在点中更改方法名称,我还必须在类曲线中更改方法setX
不,你没有。如果愿意,可以这样做,但这两种方法是独立的。您根本不必公开
点
中的所有方法,事实上,大多数时候您都不想公开。您应该只公开与正在编写的类相关的方法。有时,它们可能只是通过单个字段向下委托,但通常会涉及多个字段,或者除了调用委托方法之外,您还需要执行其他操作。您的代码是正确的。只要在继续工作之前仔细考虑一下名字,你就不会有麻烦了
或者,您可以考虑创建一个<代码>接口<代码>,它实现与其他人共享的基本特征。这样,如果您在接口上添加/更改/删除内容,则实现了该接口的类将不会编译,并向您清楚地显示,如:
缺少接口方法:“setNewX”
…还有另一种方法。您可以通过公共getter提供对p的访问,如下所示:
public class Curve {
private Points p;
public void setX(int x) {
p.setX(x);
}
public Points getPoints(){
return p;
}
}
在此之后,您可以随意更改Points类,而无需更改Points和Curve的方法名称。您只需访问下面的p
公共课堂作文{
public static void main(String[] args) {
// TODO Auto-generated method stub
Curve c = new Curve();
Points p = c.getPoints();
p.setX(1);
}
}在曲线类中使用getter
public Points getPoints() {
return p;
}
然后在main方法中访问如下的X属性:
Curve c = new Curve();
Points p = c.getPoints();
p.setX(1);
您可以将属性用作
点
类
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;
}
}
但点p被声明为私有字段。我认为,使用这种结构,使这个领域成为公共领域,保持私有领域。然而,您的setter(设置字段值的方法)是公共的。我的意思是,由于返回的链接,点字段出现在主方法上。但是我将其声明为private,以避免在其他类中执行p.setX(1)(对其他方法也是如此)。可能这不是一个好的解决方案,但是结果是所有的点域都会改变,但是我只想改变一个域。我的意思是这种情况,我假设这个点是一个点的类,如果你假设另一个情况,这是错误的,T将删除我的情况。主要的方法是在大对象中包含小对象。@VladimirS:不是天生的-尽管您应该注意编写大量的传递方法。从一个不知道你的类组成的主叫者的角度来看,总是考虑它是否真的有意义。这些操作需要对整个类有意义。