【问题标题】:Cannot make a static reference to the non-static method getID() from the type Student [duplicate]无法从 Student 类型对非静态方法 getID() 进行静态引用 [重复]
【发布时间】:2019-06-29 15:37:46
【问题描述】:

我尝试在我的程序中使用访问器 (Set/Get) 方法,当我尝试在 main 方法中使用 Get 方法时,我收到此错误:
无法从 Student 类型对非静态方法 getID() 进行静态引用

我不确定如何解决这个问题。我是Java编程的初学者。


以下是有问题的特定行:

设置/获取方法:

public void setID (String ID) {this.ID = ID;}
public String getID() {return this.ID;}

错误行:

System.out.println(Student.getID());

任何建议将不胜感激!*

A full picture of my code.

【问题讨论】:

  • 你想在Student的实例上调用getID(),而不是Student本身
  • 提示:您已经创建了两个 Student 对象。当您尝试致电Student.getID() 时,您认为您指的是这两个中的哪一个?为什么?
  • 你应该在 Student 对象上调用 .getId()。
  • 您应该遵循 Java 命名约定:变量名总是以小写开头。所以ID应该是idBob应该是bobName应该是name
  • @Isiah deDiego main() 方法甚至在类实例化之前就被 JVM 调用,因此它被声明为静态。

标签: java


【解决方案1】:

试试这样的...

Student aStudent = new Student();
aStudent.setID("2112");
System.out.println(aStudent.getID());

请注意,我创建了一个 Student 实例,并要求该实例返回其 ID。 Student.getID() 要求 Student 类返回其 ID,这不是您编写的代码,也可能不是您想要的。

【讨论】:

    【解决方案2】:

    getId()Student 类的非静态方法,应该在对象上调用,而不是在类本身上调用。

    为了理解,id 实例属性属于特定学生(如 BobThomas),因此您应该调用 Bob.getId()Thomas.getId(),您分别为您提供 Bob 或 Thomas 的 id 属性。

    【讨论】:

      【解决方案3】:

      您应该在实例上调用getID(),而不是类本身。

      这是您的代码中的一个示例:

      Bob.getID(); // instead of Student.getID()
      

      为了更有帮助,我建议您在了解 类/类型变量/实例 的概念之前不要再胡思乱想了.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-08
        • 2012-07-14
        • 2013-01-15
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多