java - 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
解决方案
我有 2 个“getX”方法的原因是扩展的 getX 会根据其他值对值 x 进行检查和操作。
我可以用同样的理由来回答你的问题。如果基类getX()
在返回值之前做了一些“检查和操作 x 的值”会怎样?在这种情况下,return super.getX()
将返回与 不同的值return x
。
即使目前基类方法只是简单地返回x
,将来也可能会改变。如果您希望您的子类getX()
返回一个值,该值取决于基类返回的值getX()
(可能是也可能不是简单的实例变量x
),您应该使用super.getX()
而不是直接访问x
。
推荐阅读
- javascript - 强制浏览器使用特定分辨率
- sql-server - 从左表中获取所有行并根据其他列的值删除重复行
- jestjs - 开玩笑遇到了意外的令牌
- php - 是否可以通过执行查询来导出 MySQL 数据库?
- powerbi - 计算 2 个日期 DAX 之间的月数
- android - 如何在不调用 api 的情况下显示数据?
- capl - 独木舟:- 如何在 CAPL 脚本中使用位掩码
- python - 如何在 python 中使用 tplquad、dblquad 进行积分?
- java - Multi-WAR tomcat vs Docker 容器
- node.js - 在 http 中发送和接收一个大的 json 对象