Java 在同一类中的另一个方法内调用方法

Java 在同一类中的另一个方法内调用方法,java,Java,Bruce Eckel在其“Java思维,第四版”的第428页(关于类型信息的章节)中给出了以下示例: public class Staff extends ArrayList<Position> { public void add(String title, Person person) { add(new Position(title, person)); } /* rest of code snipped */ 这不是递归,而是重载。两个add

Bruce Eckel在其“Java思维,第四版”的第428页(关于类型信息的章节)中给出了以下示例:

public class Staff extends ArrayList<Position> {
    public void add(String title, Person person) {
        add(new Position(title, person));
    }
/* rest of code snipped */

这不是递归,而是重载。两个add方法(代码段中的一个和您正在扩展的ArrayList“提供”的一个)不是同一个方法,因为它们是用不同的参数声明的。

这只是一个重载。
add
方法来自
ArrayList
类。请注意
职员继承了

采用
字符串的
添加
方法,而
人员
正在调用另一个采用
位置的
添加
方法。占据
位置的那一个继承自
ArrayList


由于您的类
Staff
扩展了
ArrayList
,因此它自动具有
add(Position)
方法。新的
add(String,Person)
方法是专门为Staff类编写的。

Java隐式地为这样调用的方法假定对当前对象的引用。所以

// Test2.java
public class Test2 {
    public void testMethod() {
        testMethod2();
    }

    // ...
}
完全一样

// Test2.java
public class Test2 {
    public void testMethod() {
        this.testMethod2();
    }

    // ...
}

我希望第二个版本能更清楚地说明您想要做什么。

递归是一种调用自身的方法。在这种情况下,它是一个递归。但是,在方法内部设置停止循环的限制(如果条件为)之前,它将是重载的

顺便说一下,那本书很棒!我认为这个问题比公认的答案更能解决问题。这里真正让人困惑的是重载,而不是方法调用语法。这肯定是方法重载的一种情况,但是我不认为这是OP所困惑的。它更多的是在没有任何对象引用的情况下调用非静态方法。
// Test2.java
public class Test2 {
    public void testMethod() {
        this.testMethod2();
    }

    // ...
}