黑马程序员技术交流社区
标题:
super和this问题
[打印本页]
作者:
周洋
时间:
2012-3-8 16:17
标题:
super和this问题
1为什么super(...)和this(...)调用语句不能同时在一个构造函数中出现?2为什么super(...)或this( ...)调用语句只能作为构造函数中的第一句出现?
作者:
贠(yun)靖
时间:
2012-3-8 16:43
因为this 和super 都只能出现在构造函数的第一行了,这是规定,所以不能两个都出现
你可以这样想。
class Demo
{
}
作者:
贠(yun)靖
时间:
2012-3-8 16:48
因为this 和super 都只能出现在构造函数的第一行了,这是规定,所以不能两个都出现
你可以这样想。
class DemoFather
{
DemoFather()
{
this();
}
}
class Demo extends DemoFather
{
Demo()
{
super();
}
}
super()调用父类的空惨构造函数 就调用到父类的this()了
如果super()和this()出现在同一个构造函数里面了 你说虚拟机会怎么执行呢? 是调用父类的呢还是调用本类的?
所以人家设计的时候就是 构造函数中this 和super只能放到第一行 而且他们两个只能出现一个哦亲
作者:
赵孟恩
时间:
2012-3-8 16:54
首先你要理解关键字this和super的意思, this: 在类的方法定义中关键字this代表使用该方法的对象的引用, 可以处理方法中成员变量和参数重名的情况。
super:调用父类的东西就要用super! 子类的构造方法中必须调用父类的构造方法, 而使用super(...)就可以调用父类的构造方法,子类不调用系统则默认调用父类的无参构造方法,子类如果不调用父类的构造方法则会编译出错!
class Demo
{
Demo(String s){
this.s = s; // this.s 是当前的对象的s , s是形参
}
}
class Demo1 extends Demo
{
Demo1(String s1)
{
super(String s1); // 父类的构造方法 必须先调用
this.s1 = s1 ; //this.s1是子类对象引用
}
}
this 通常指当前对象 super通常指父类
作者:
李会启
时间:
2012-3-8 18:12
This():当前类的对象,super父类对象。
Super():在子类访问父类的成员和行为,必须受类继承规则的约束
而this代表当前对象,当然所有的资源都可以访问.
在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.
而在方法中super和this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2