黑马程序员技术交流社区

标题: super/this关键字 [打印本页]

作者: 苑桥别馆    时间: 2014-11-22 00:53
标题: super/this关键字
RT,super/this关键字,在内存中是如何运作的,两者的存储位置相同么?
作者: LiuWei1989    时间: 2014-11-22 02:13
This关键字
作者: 丑小子799    时间: 2014-11-22 06:47
我感觉是super在this中,因为子类对象的创建,一定会调用父类的构造方法。this代表子类对象的引用,super代表父类对象的引用
作者: cbb    时间: 2014-11-22 08:31
手机打字……可能不太详细…this是有两种用法,一种是代表本类对象的引用,一种是以语句形式出现,作用是构造函数之间相互调用…
而super是代表父类对象的引用!
当程序加载,实例化子类对象,会首先去看子类的构造函数,而子类的构造函数内部第一行有默认的super语句,然后jvm就会跑到父类进行初始化,完事才会对子类进行初始化。

下面这段就是对象的初始化过程……
首先执行父类静态的内容,父类静态的内容执行完毕后。
接着去执行子类的静态的内容,当子类的静态内容执行完毕之后。
再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕。接着执行父类的构造方法,父类的构造方法执行完毕之后。
它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕,再去执行子类的构造方法。
作者: 关军波    时间: 2014-11-22 09:01
楼上说的很详细!学习了
作者: relice    时间: 2014-11-22 21:30
你的问题有点奇怪!
super/this关键字应该是用法吧,
this指的就是对象,或者对应对象的变量.this()放在第一行,指对应对象的构函
super指的就是父类对象,或者对应父类的变量.一般用于super();调用父类构造方法
作者: 迷失的小Z    时间: 2014-11-22 21:41
一个是对对象的引用,一个是对内存中父类的引用, 不是一个概念,但可以理解为一样的用法,其实this是代替了对象名,super代替了父类名……
作者: 迷失的小Z    时间: 2014-11-22 21:46
另外一种用法是在构造函数中, this()是调用本类中的构造函数,有参无参都可以,super()则是调用父类的构造方法,同this。但是注意,子类中的构造方法一定要有一个是调用super()的。另外在构造函数中这俩都要放在第一行……
作者: xingkong123    时间: 2014-11-22 23:51
楼上说的好好,学习了。。。。。
作者: 艾维苏    时间: 2014-11-23 09:39
学习一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2