[英]Can I use the accessor methods (getter and setter) of a java class inside this class?
private int x;
private int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
public void setY(int y){
this.y = y;
}
public int getY() {
return y;
}
public void setX(int x){
this.x = x;
}
public int getX() {
return x;
}
我想实现 Sum 方法。 但我似乎找不到在 class 中使用访问器的良好做法。哪种方法更好?
public int sum(){
return x + y;
}
要么
public int sum(){
return getX() + getY();
}
当然你可以,正如你刚才所展示的,一般来说有一个重要的区别:但是,这些方法可以被子类覆盖。 但现场访问不能。
有一个指导原则,不应将不打算被覆盖的项目设置为final
,但是如果您希望某人能够创建一个新的LoggingPoint extends Point
在访问时打印日志消息,那么您通常应该通过访问属性访问器,以便子类可以覆盖getX()
和getY()
。
(一个例外是在构造函数中,其中子类的初始化可能尚未运行。这种复杂性是某些人更喜欢默认将所有内容设为 final 的原因:如果扩展名是需要,但很难“关闭”不是最终的 class。)
您可以省略“this”,因为从上下文中可以清楚地看出您正在使用 class 变量,就像您在 getter 中所做的那样。 构造函数和 setter 方法中的“this”用于将 class 变量与同名的输入参数区分开来。
public int summ(){
x + y;
}
注意事项:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.