社区
Java SE
帖子详情
super和this方法
z119273835
2008-11-14 06:30:00
为什么super()和this()调用语句不能同时在一个构造函数中出现?
为什么super()和this()调用语句只能作为构造函数中的第一句出现?
谢谢了 小弟是菜鸟 刚刚学java
...全文
299
21
打赏
收藏
super和this方法
为什么super()和this()调用语句不能同时在一个构造函数中出现? 为什么super()和this()调用语句只能作为构造函数中的第一句出现? 谢谢了 小弟是菜鸟 刚刚学java
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zbwork000
2008-11-15
打赏
举报
回复
说的好,支持4楼的答案
likgui
2008-11-15
打赏
举报
回复
法律规定的,没办法
winerluo
2008-11-15
打赏
举报
回复
谢谢了,学了点
fengyuleidian3
2008-11-14
打赏
举报
回复
只知其然,而不知其所以然。
这说的不就是我啊。
Crossmaya
2008-11-14
打赏
举报
回复
学习了~牛!
忙碌的布谷鸟
2008-11-14
打赏
举报
回复
是一个构造的顺序问题
superIT3107
2008-11-14
打赏
举报
回复
java是c++的改版,也是面向对象语言
所以可以用c++来解释
使用super就说明你的构造函数要调用基类
按照c++的规则,执行子类的构造函数首先要分配内存空间,然后调用基类的构造函数,然后是子类的构造函数
所以super要放在首位
wNvShine
2008-11-14
打赏
举报
回复
既然都得放在第一行
那怎么可能两个都出现在同一个构造函数中嘛
morningsun2218
2008-11-14
打赏
举报
回复
关于第一个super()可以出现,而this()不能,因为如果调用会是递归构造函数,是不允许的
关于第二个就像前面说的那样,java怕修改当前对象或父类对象的参数,而引起麻烦,就规定只能在第一条出现,如果不是就会报错
ZiSheng
2008-11-14
打赏
举报
回复
[Quote=引用 8 楼 guogaocheng 的回复:]
this(),super()这不就是调用无参的嘛,
如果是有参数的那就必须是要显示的调用了的啊super(参数1,参数2).
[/Quote]
不好意思,误解了你的意思
ZiSheng
2008-11-14
打赏
举报
回复
this的作用
第一代表的是创建的当前的对象,对隐士参数的引用;
第二是调用同一类的构造函数
yangkaixin1226
2008-11-14
打赏
举报
回复
[Quote=引用 7 楼 ZiSheng 的回复:]
ls理解有误,super是调用父类的构造函数,当然包括含有参数的构造函数,this是调用自己的类的重载的构造函数,
为什么在第一句,这个应该是规定吧。
[/Quote]
this经常是一些实例变量与某些方法重名时,引用方法内的变量
echoabs
2008-11-14
打赏
举报
回复
LS的正解!!!放在第一行应该是约定的吧!!!
我博客里有关于this的三大用法,建议LZ看一下!!!
http://blog.csdn.net/aa278489710/archive/2008/11/14/3298014.aspx
guogaocheng
2008-11-14
打赏
举报
回复
this(),super()这不就是调用无参的嘛,
如果是有参数的那就必须是要显示的调用了的啊super(参数1,参数2).
ZiSheng
2008-11-14
打赏
举报
回复
ls理解有误,super是调用父类的构造函数,当然包括含有参数的构造函数,this是调用自己的类的重载的构造函数,
为什么在第一句,这个应该是规定吧。
guogaocheng
2008-11-14
打赏
举报
回复
其实我们平时写的代码,没有在构造中调用super()和this()m,JVM在运行代码的时候也会去调用的。这就是JVM会调用默认构造函数。
如果在程序中写了super()和this(),就相当与显示的去调用构造儿也。
ZiSheng
2008-11-14
打赏
举报
回复
关注下。。
guogaocheng
2008-11-14
打赏
举报
回复
super() 和 this() 都是要求在构造函数中的第一句位置调用,
所以不可能在同一构造中同时调用super()和this().
super()和this()分别是显示的调用了父类和本类的无参构造函数,这样的话JVM就不会自动调用默认的构造了。
其实在不显示调用super()和this(),JVM还是会去调用的,只是调用工作留给了JVM来完成了。
因此,如果你在构造函数显示的调用构造super()或者this(),必须是要放在第一个语句上。
z119273835
2008-11-14
打赏
举报
回复
谢了 虽然还是不明白
paudal_1984
2008-11-14
打赏
举报
回复
帮顶
第一个问题不是很理解
第二个问题,我认为是JAVA的约定,如放在第二行,而在第一行修改了父类的某个变量,则会引起混淆。
当然对于第一行是无关父类变量的内容,第二行使用super,这样的情况则无法解释
当初看的时候没这么认真
汗
加载更多回复(1)
super
和this关键字的使用
2.this和
super
区别: 代表的对象不同: this:代表本身调用者这个对象
super
:代表父类对象的引用 前提: this:没有继承也可以使用
super
:只能在继承条件下才可以使用 构造
方法
: this();调用本类的构造 ...
super
和this的区别
super
和this都可以在成员
方法
中用来访问:成员变量和调用其他的成员函数,都可以作为构造
方法
的第一条语句,那它们有什么区别呢?2、在非静态成员
方法
中,this用来访问本来的
方法
和属性,
super
用来访问父类继承下来...
this和
super
用法
注意
super
和this都不能出现在静态
方法
和静态代码块中,因为
super
和this都是存在与。
super
()和this()都必须是在构造
方法
的第一行,所以不能同时出现。在子类中访问父类的成员变量,特别是当子类的成员变量与父类的...
Java中
super
和this关键字的使用
在使用
super
和this关键字时, 以下描述正确的是() ...
super
() 和 this() 不一定要放在构造
方法
内的第一行 C. this() 和
super
() 可以同时出现在一个构造函数中 D. this() 和
super
() 可以在static 环境中使用...
super
与this的区别总结
3、
super
和this不能同时调用构造
方法
super
vs this区别: 1、代表的对象不同;this:本身调用这个对象;
super
:代表父类对象的应用 2、前提不同;this:没有继承也可以使用;
super
:只能在继承条件下才可以使用 ...
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章