【问题标题】:Access modifiers访问修饰符
【发布时间】:2014-11-03 19:05:20
【问题描述】:

我是 Java 和 OOP 的新手,我需要一些帮助来理解一些事情。假设您有以下课程:

public class NewClass {
    private long time;

    public NewClass () {
      time = 0;
    }

    public NewClass (long time) {
      this.time = time;
    }

    public long GetAsMs () {
      return time;
    }

    public boolean isGreaterThan(NewClass span) {
      return GetAsMs() > span.GetAsMs();
    }

我知道,如果我创建此类的新实例,我将拥有一个包含字段/变量 time 和相关方法的对象。我不明白 isGreaterThan 到底在做什么以及如何称呼它。它所比较的​​这两个“变量”不总是完全相同吗?

【问题讨论】:

    标签: java class methods access-modifiers


    【解决方案1】:

    它们可能不同,注意接受参数的构造函数:

    public NewClass (long time) {
          this.time = time;
    }
    

    如果你构造两个对象:

    NewClass xObj = new NewClass(12345678910);
    NewClass yObj = new NewClass(12345678919);
    

    现在xObj.isGreaterThan(yObj) 将返回false。为什么?让我们看看那里发生了什么:

    isGreaterThan 应用于 xObj 对象,该对象具有类成员 time,其值为 12345678910。您正在传递 yObj,它有自己的 time,其值为 12345678919 - 和它们是不同的,GetAsMs 应用于不同的对象时会返回两个不同的结果。

    【讨论】:

    • 您能否提供一个示例,其中包含两个 NewClass 实例并调用了 isGreaterThan 方法?
    猜你喜欢
    • 2017-08-18
    • 2013-05-25
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2012-06-25
    • 2017-03-13
    • 1970-01-01
    相关资源
    最近更新 更多