看看 从基础学作者: 黑马--张帅 时间: 2012-9-3 21:52
class Super
{
int i=0;
public Super(String s)
{
i=1;
}
}
class Demo20 extends Super
{
public Demo20(String s)
{
super(s);//出错在这里
i=3;
}
public static void main(String[] args)
{
Demo20 d=new Demo20("yes");
System.out.println(d.i);
}
}
当Demo20继承Super时,在创建子类对象进行初始化时,子类必须调用父类的构造函数看父类对子类继承父类成员变量的初始化
清楚父类对成员变量的操作动作,以后子类好对这个成员变量做正确的操作动作。作者: 舒远 时间: 2012-9-3 21:55
class Super
{
int i=0;
public Super(String s)
{
i=1;
}
}
class Demo extends Super
{
public Demo(String s)
{
i=3;
}
public static void main(String[] args)
{
Demo d=new Demo("yes");//new 的时候会隐式调用父类的无参数构造函数,因为父类中已经写了一个带一个参数的构造函数,默认的无参构造函数就没有了,这样造成了子类实例化的时候无法调用父类无参构造函数。这就是错误原因。解决方法如下代码:
System.out.println(d.i);
}
}
class Super
{
int i=0;
public Super(String s)
{
i=1;
}
}
class Demo extends Super
{
public Demo(String s)
{
super(s);//显示调用父类含参数的构造函数。
i=3;
}
public static void main(String[] args)
{
Demo d=new Demo("yes");
System.out.println(d.i);
}
}