黑马程序员技术交流社区
标题:
关于构造器
[打印本页]
作者:
周亮
时间:
2012-12-30 14:08
标题:
关于构造器
为什么Super语句为什么不能与this共存?
构造方法:
super();
this();
class Demo
{
Demo(){
this(20);
}
Demo(int age)
{
super();
//this();
}
}
作者:
马志军
时间:
2012-12-30 14:13
本帖最后由 马志军 于 2012-12-30 14:14 编辑
this(),super()都要放在第一行,因为初始化子类要先初始化父类,所以super()必须在最前,如果需要调用无参构造方法,那么说明它也是要先初始化的然后再初始化自己剩下的代码,所以this()要放最前,如果说要用this(),还放super()那就冲突了。
调用了this(),而这个无参的构造方法本身第一行有个隐式的super(),所以虽然用Demo(int age)这个构造方法,里面没有写super(),但是依然相当于已经调用了super()
作者:
王永彬
时间:
2012-12-30 14:26
this关键字总是指向调用该方法的对象,所代表的是当前类,谁在调用这个方法,this就代表谁。而super关键字是用于限定来调用从父类继承得到的属性和方法。
作者:
王少雷
时间:
2012-12-30 14:30
子类从父类继承的时候,子类内部实际上已经包含了一个父类对象——并且内部自动调用super关键字指向了这个父类对象;
this()的一个用法就是在构造函数中调用参数个数等于this的参数个数相同的构造函数
this 调用的这个类本身的构造方法,不是超类的构造方法~~
这个和this的另外一个用法要区分开
只有在构造函数中才有这种用法~~
而且不能和super()一起用~~
作者:
张会文
时间:
2012-12-30 14:41
this()调用的是自身类中的方法。
super()调用的是父类中的方法。
作者:
何创
时间:
2012-12-30 16:17
在本类或者是子类中this()调用的是自身类中的方法,也就是本类的方法就相当于本类的对象。
而super()调用的是父类中的方法,也就是相当于父类的对象,在子类中使用Super(),则是调用父类的方法,,或者说使用的是父类的对象
this 和super 使用的地方不同 不可以同时放在一个地方使用 。
作者:
何伟
时间:
2013-1-1 19:19
操作的是哪个对象,哪个对象就是this。
当前类的引用。
例如在Person类中使用this,那么this就是Person类的引用。
this不能被赋值,例如this = new Person()是错误的。
在类中,所有部分出现的地方,其实前面都可以加上this。this就是那个整体
作者:
王钊
时间:
2013-1-1 22:46
注意一点:生成子类对象时,
Java默认首先调用父类的不带参数的构造方法
,接下来再去调用子类的构造方法,生成子类对象。
如果子类使用super()显式调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类不带参数的构造方法。
super与this一样,必须要作为构造函数的第一条执行语句,前面不能有其他可执行语句。
所以你的第二个构造函数,要么第一句是super(),要么是this(),不能同时有。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2