访问修饰符

时间:2014-09-10 08:01:48

标签: java class methods access-modifiers

我是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到底在做什么,我该怎么称呼它。 Aren这两个"变量"它的比较总是完全一样吗?

1 个答案:

答案 0 :(得分:2)

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

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

如果构造两个对象:

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

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

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