在以下示例伪代码中:
public class MyPanel extends JPanel {
public void reset() {
this.clear();
clear();
}
public void clear() { System.out.println("FAIL"); }
};
public class MySpecialPanel extends MyPanel {
public void clear() { System.out.println("Hello, world"); }
};
调用(new MySpecialPanel()).reset()
时,this.clear()
和clear()
不应同时解析? this.clear()
和clear()
之间有什么区别吗?
答案 0 :(得分:5)
public void reset() {
this.clear();
clear();
}
在上面的代码中,它调用相同的方法两次。 clear()
和this.clear()
之间没有区别。
您可以使用super.clear()
显式调用超类方法。
答案 1 :(得分:1)
this.clear()
和clear()
之间没有区别。
您有一个MySpecialPanel
对象,并且该对象上的clear()
方法被调用两次。要清除超类,必须使用super.clear()
所以,你做这样的事情 -
public void reset() {
clear();
super.clear();
}
答案 2 :(得分:0)
:
public void reset() {
this.clear();
clear();
}
this.clear()和clear()都是一样的。
这是一个用于在类本身内设置调用范围的关键字 super将范围设置为类本身和超类
答案 3 :(得分:0)
说明显而易见的许多已经响应 - 当你在一个对象上调用clear()
时,该对象在范围内;当您使用this
时,您指的是上下文中的同一个对象。