1

我的课程从 DefaultTableModel 扩展而来

我尝试:

super.removeRow(...);

this.removeRow(...);

为什么他们都工作?

4

3 回答 3

5

super指超级(父)类型的实现。

this引用当前类型的实现,如果存在,则查找继承树,即。做同样的事情super

根据您的类如何扩展DefaultTableModel,它们可能会调用相同的方法。

于 2013-09-09T20:01:20.837 回答
3

不是答案,但this.whatever在最复杂的 Swing GUI 中可能会拼错

super.removeRow(...);

this.removeRow(...);

应该是(我的观点是避免......)

myTableModel.removeRow()- 例如((DefaultTableModel) table.getModel()).removeRow(row);

或者你在 XxxTableModel 中覆盖

public void removeRowAt(int row) {

于 2013-09-09T20:08:07.360 回答
1

实际上,他们正在removeRow为您的案例调用相同的方法,即在父类中。

仅当您决定removeRow在子类中覆盖时,您才可以这样调用super.removeRow()

@Override
void removeRow() {
   // call parent class's removeRow
   super.removeRow()
   // rest of implementation
}
于 2013-09-09T20:01:42.927 回答