黑马程序员技术交流社区
标题:
关于继承中隐式this和super的疑问。<已解决>
[打印本页]
作者:
王德升
时间:
2012-5-24 13:23
标题:
关于继承中隐式this和super的疑问。<已解决>
本帖最后由 王德升 于 2012-6-3 23:15 编辑
class Fu
{
Fu()
{
num = 33;
System.out.println("fu run");
}
Fu(int x)
{
System.out.println("fu ..."+x);
}
}
class Zi extends Fu
{
Zi()
{
System.out.println("zi run");
}
Zi(int x)
{
System.out.println("zi..."+x);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z = new Zi(0);
System.out.println(z.num);
}
}
毕老师说道Zi类中会有隐藏的super,还有this(因为new了对象,this代表对象),
因为都是构造函数,就算不调用也会先访问父类,因为有super先默认初始化父类,
麻烦大家给我说说这其中到底是怎么一回事?
作者:
谭威
时间:
2012-5-24 13:31
子类继承父类,那么他的属性和普通方法,构造方法都会被继承.即使没有super 也会先调用父类的构造函数 super关键字用来显示的调用子类的方法。
作者:
魏涞
时间:
2012-5-24 13:33
子类中所有的构造函数默认都会访问父类中空参数的构造函数
因为每一个构造函数的第一行都有一条默认的语句super();
子类会具备父类中的数据,所以要先明确父类是如何对这些数据初始化的。
当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super语句指定要访问的构造函数。
作者:
李红飞
时间:
2012-5-24 13:38
class Fu
{
Fu() //父类构造函数1
{
num = 33;
System.out.println("fu run");
}
Fu(int x) //父类构造函数2
{
System.out.println("fu ..."+x);
}
}
class Zi extends Fu
{
super(); //子类在例化的时候先调用,父类的构造方法即super()就代表 显示调用父类的构造方法
//super先默认初始化父类,这是因为由于子类要继承父类的属性和方法,所以要先实例化父类对象才能继承
Zi() //子类构造函数1
{
System.out.println("zi run");
}
Zi(int x) //子类构造函数2
{
System.out.println("zi..."+x);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z = new Zi(0);
Syste实例化m.out.println(z.num);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2