3 回答
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
TA贡献1797条经验 获得超6个赞
与this不同,Java中的super关键字不是对象引用。
这用作对调用对象的引用。
但是,这里面有可以存储在没有引用ID超级 超是用来解决父类,它的方法和数据成员的关键字。
因此,您无法打印super关键字的值。您只能使用super关键字访问父类的方法和成员。
![?](http://img1.sycdn.imooc.com/5458643d0001a93c02200220-100-100.jpg)
TA贡献1878条经验 获得超4个赞
根据Java语言规范§15.11.2和§15.12.1,
使用以下方式访问超类成员
super
该表单
super.Identifier
引用Identifier
当前对象的命名字段,但是将当前对象视为当前类的超类的实例。表单
T.super.Identifier
是指与Identifier
相对应的词汇包围实例的名称字段T
,但将该实例视为的超类的实例T
。...
编译时步骤1:确定要搜索的类或接口(在方法调用表达式中)
如果形式为
super.[TypeArguments]Identifier
,则要搜索的类是其声明包含方法调用的类的超类。
它仅提及super
表达式的两种形式-super.Identifier
或T.super.Identifier
。您没有使用这两种形式。您使用的super
好像是一样this
,就好像它是可以自己使用的某种变量一样。这是不正确的,super
其行为与完全不同this
。
如果您比较规格描述的方式this
:
§15.8.3
this
关键字
this
只能在以下情况下使用:
在实例方法或默认方法的主体中(第8.4.7节,第9.4.3节)
在类的构造函数的主体中(第8.8.7节)
在类的实例初始化器中(第8.6节)
在类的实例变量的初始化程序中(第8.3.2节)
表示接收器参数(第8.4.1节)
如您所见,这意味着this
可以单独使用。super
不能。
此外,像的表达式"Cylinder"+super
比的可读性差"Cylinder"+suer.toString()
。你不觉得吗 顺便说一句,return "Cylinder"+this;
可能会导致无限递归。
添加回答
举报