Java在数组中调用不带点符号的方法

Java在数组中调用不带点符号的方法,java,Java,有人能解释一下getName()和getGrade()如何在没有被告知的情况下引用与createProgressReport()相同的项目吗 显然,createProgressReport是通过item.createProgressReport()对数组中的项调用的。但是似乎没有要求对同一项调用getName()和getGrade(),因为没有像item.getName()那样的点符号 getName()和getGrade()方法似乎是如何自动“知道”调用该方法的学生的 for (Student

有人能解释一下
getName()
getGrade()
如何在没有被告知的情况下引用与createProgressReport()相同的项目吗

显然,
createProgressReport
是通过
item.createProgressReport()
对数组中的项调用的。但是似乎没有要求对同一项调用
getName()
getGrade()
,因为没有像
item.getName()那样的点符号

getName()
getGrade()
方法似乎是如何自动“知道”调用该方法的学生的

for (Student item : myStudents) {
    System.out.println(item.createProgressReport());

public String createProgressReport() {
    String myString = getName() + " " + getGrade();

对对象的实例调用
createProgressReport
。除非您以其他方式编码,否则在该方法中调用的任何方法都将在同一对象上调用

换句话说,您的方法相当于:

String myString = this.getName() + " " + this.getGrade();

在我看来,您似乎是在类的上下文中工作

在面向对象编程中,从类中的另一个方法调用方法通常会引用同一个实例

可能不会以这种方式执行的语言是JavaScript或php,您需要引用$this对象

//php
$this->methodName();

//JavaScript
var self = this;
self.methodName();

//java
methodName(); //implied this when working within the context of the same class

该死的,就在我输入答案的时候,你比我快。这不是一场关于速度的比赛。由OP决定他喜欢哪一个答案。这是真的。结局好,一切都好!谢谢乔,我想我明白了。因为createProgressReport是在项上调用的,所以除非另有指定,否则该方法中的所有内容都将在同一项上调用?对吗?