繁体   English   中英

我可以在这个 class 中使用 java class 的访问器方法(getter 和 setter)吗?

[英]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;
}

注意事项:

  1. 请修复拼写问题,'sum' 只有一个'm'。
  2. 请不要忘记附上退货声明:)
  3. 建议方法的名称可以更清楚,例如 sumOfCoordinates。 命名东西是一种艺术形式,总是在你的方法和变量名称上挑战自己,并准备好尝试不同的想法,直到你找到你真正满意的东西(例如,我刚刚在审查时将建议的替代方案更改了三次这个答案。),不要过于啰嗦。 但确实更喜欢清晰而不是简洁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM