返回信息流虽然静态方法非常灵活,但是它不能以任何方式引用 this 和 super 关键字。与前面
的道理一样,因为静态方法在使用前不创建任何实例对象,因此,当静态方法被调用时,
this 所引用的对象根本就没有产生。所以,要记住,所有的代码都是在内存当中运行的,
如果一个变量或者对象还没有在内存当中为它分配空间,或者一个方法还没有在内存当中
为它分配代码区,那么都是不能调用的。
对于this和super的意义,我理解的是this是当前所在对象的引用,那super应该怎么理解呢?必须有实例对象之后才能引用super吗?
这是一条镜像帖。来源:北邮人论坛 / java / #25285同步于 2013/5/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]super应该怎么理解?
gl5
2013/5/13镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
super是对父对象的引用,子类实例化时必须实例化父类(隐式或显示),子类的static method可以在不实例化子类的情况下就调用,所以这种情况下不能保证已创建父类对象,就不能用super关键字
this 表示对当前对象的引用,super 表示强制引用父类的构造函数或者方法,而不是引用当前子类对象。将方法声明为static方法,调用时不会产生实例对象,所以既不能使用表示引用当前对象的this,也不能使用强制引用父类对象的super
一个子类继承父类,在实例化子类时,初始化操作是从父类开始,并实例化一个父类对象,然后子类实例化,也就是你创建一个对象时,内存不是只创建了一个对象,而是同时创建了所有该子类的父类对象,只是这些父类对象的引用只有子类对象持有,也就是super