Java 在同一类中的另一个方法内调用方法
Bruce Eckel在其“Java思维,第四版”的第428页(关于类型信息的章节)中给出了以下示例: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
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();
}
// ...
}