【问题标题】:Methods behaving like Class Fields行为类似于类字段的方法
【发布时间】:2017-07-25 16:39:41
【问题描述】:

有时您需要由不止一个值组成的值,但基础值也可以更改。

示例

在用 Java 编写的角色扮演游戏中,可能有一个代表玩家的类。他可以拥有“生命”和“耐力”这两个领域。最后一个字段可以增加玩家的生命。所以我们有“生命”和增加生命的属性“耐力”,它导致了完整或完整的生命。

我会这样写:

public class Player
{
    private int life;
    private int endurance;
    private int life_total()
    {
        return life + endurance;
    }

    public Player()
    {
        life = 10;
        endurance = 2;
    }

    public int get_life_total()
    {
        return life_total()
    }
}

我会编写一个看起来像带括号的字段并且行为像字段的方法。这是一个可以接受的解决方案还是对于这种情况有更好的解决方案?

在像 javascript 这样具有函数引用的语言中,是否可以使用此类函数引用来返回组合值?

【问题讨论】:

  • 你为什么不直接使用public getLifeTotal() { return life + endurance; }?那个额外的私有方法没有意义。
  • 对于您的示例,这很好。但是您不需要额外的私有方法。只需返回两个字段的总和。
  • 因为当你按照我展示的方式编写它时,更明显的是这是一个球员的价值,你也可以更快地看到球员的这种价值,而不仅仅是一个方法和其他人一样。因为通常你只使用 getter 作为真实类字段的返回方法,而不是其他东西或不是真实类字段的值,我认为。
  • @Tom 您缺少返回类型(与 OP 一样)
  • "Because normally you use getters only as return methods for real class fields, not for other stuff." -- 谁说的?属性通常是计算出来的。

标签: java class field


【解决方案1】:

您的 getter 方法应该看起来更像这样。没有理由让您的 getter 方法调用另一个方法来获取您的变量。

public int get_life_total(){
    return life + endurance;
}

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多