java - 访问修饰符

标签 java class methods access-modifiers

我是 Java 和 OOP 新手,我需要一些帮助来理解一些事情。假设您有以下类(class):

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 方法到底在做什么以及如何调用它。它所比较的​​这两个“变量”不是总是完全相同吗?

最佳答案

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

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 有自己的时间,其值为 12345678919 - 而且它们是不同的,GetAsMs 在应用于不同的对象时会返回两个不同的结果。

关于java - 访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760218/

相关文章:

java - 使用 GNU Compiler for Java 而不是 Sun JDK 编译 Java 时的差异

使用toggleClass更改类后的jQuery事件

java - 将计数器值设置回类中的初始值

pointers - X不实现Y(…方法具有指针接收器)

java - JSON for Java,编码 JSON 数组 - 流

java - 在 Java Swing 应用程序中保留对象值

java - 哪个 JAXB 实现实现了 Marshaller.getNode()?

java - 在一个类中使用 String/int/long 等

c# - 如何在特定时间每天在 C# 中调用一个方法?

java - Varargs Java 模糊调用