首页 > 解决方案 > super.getX() 和简单的 x 之间有区别吗?

问题描述

我有一个具有受保护值的类,x并且我有另一个扩展该类的类。

return super.getX()在扩展类中和之间有什么区别return x吗?

他们都可以明显地看到变量对吗?而且我的印象是这些值完全相同,所以我的教授说要使用super.getX()而不是仅仅返回有什么原因x吗?

例子:

public int getX(){
    return x;
}

对比

public int getX(){
    return super.getX();
}

我有 2getX种方法的原因是因为扩展会根据其他值getX检查并对值进行操作。x

标签: java

解决方案


我有 2 个“getX”方法的原因是扩展的 getX 会根据其他值对值 x 进行检查和操作。

我可以用同样的理由来回答你的问题。如果基类getX()在返回值之前做了一些“检查和操作 x 的值”会怎样?在这种情况下,return super.getX()将返回与 不同的值return x

即使目前基类方法只是简单地返回x,将来也可能会改变。如果您希望您的子类getX()返回一个值,该值取决于基类返回的值getX()(可能是也可能不是简单的实例变量x),您应该使用super.getX()而不是直接访问x


推荐阅读