DefaultTableModel上的“Super”和“this”

时间:2013-09-09 19:59:09

标签: java swing jtable defaulttablemodel

我的课程从DefaultTableModel扩展

我试试:

super.removeRow(...);

this.removeRow(...);

为什么它们都有效?

3 个答案:

答案 0 :(得分:5)

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

this引用当前类型的实现(如果存在),否则查找继承树,即。与super相同。

根据您的课程扩展DefaultTableModel的方式,他们可能会调用相同的方法。

答案 1 :(得分:3)

不是答案,但this.whatever在大多数复杂的Swing GUI

中可能会非常错误
super.removeRow(...);

this.removeRow(...);

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

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

或您在XxxTableModel中重写

public void removeRowAt(int row) {

答案 2 :(得分:1)

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

仅在您决定覆盖子课程中removeRow的情况下,您可以拨打super.removeRow()这样的电话:

@Override
void removeRow() {
   // call parent class's removeRow
   super.removeRow()
   // rest of implementation
}