黑马程序员技术交流社区
标题:
刚学的继承 为啥我的报错啊
[打印本页]
作者:
挖煤黑小伙
时间:
2015-5-31 13:25
标题:
刚学的继承 为啥我的报错啊
class DemoSuper
{
public static void main(String[] args)
{
Student stu=new Student();
stu.show();
Student stu1=new Student("小小");
}
}
class Person
{
private int age=10;
private String name="pa";
public Person(String name)
{
this.name=name;
System.out.println(this.name);
}
public void show()
{
System.out.println(age);
}
}
class Student extends Person
{ int age=20;
public Student()
{
System.out.println("小黑");
}
public Student(String name)
{
super(name);
}
public void show()
{
super.show();
int age=30;
System.out.println(age);
System.out.println(this.age);
}
}
作者:
想要那片海
时间:
2015-5-31 13:52
你的父类没有空参数的构造函数,但是子类有一个空参数的构造函数,这时候子类的空参数构造函数在对子类对象初始化时没有访问到父类相应的空参数构造函数对 对象的初始化情况,肯定会报错,只要在父类中也加入一个空参数的构造
class DemoSuper
{
public static void main(String[] args)
{
Student stu=new Student();
stu.show();
Student stu1=new Student("小小");
}
}
class Person
{
private int age=10;
private String name="pa";
public Person()
{
System.out.println("调用父类空参数的构造函数");
}
public Person(String name)
{
this.name=name;
System.out.println(this.name+"(调用父类的指定参数类型的构造函数)");
}
public void show()
{
System.out.println(age+""+"调用父类的show方法");
}
}
class Student extends Person
{ int age=20;
public Student()
{
//省略了 super();因为系统会默认的加上这条语句来访问父类的空参数构造函数
System.out.println("小黑");
}
public Student(String name)
{
super(name);
}
public void show()
{
super.show();
int age=30;
System.out.println("子类中的show方法:");
System.out.println(age);
System.out.println(this.age+":(默认初始化值)");
}
}
复制代码
函数就行了
作者:
挖煤黑小伙
时间:
2015-5-31 23:31
想要那片海 发表于 2015-5-31 13:52
你的父类没有空参数的构造函数,但是子类有一个空参数的构造函数,这时候子类的空参数构造函数在对子类对象 ...
哦了谢谢哈
作者:
下一页5
时间:
2015-6-1 00:19
好牛逼啊,一看就不是0基础啊
作者:
经济
时间:
2015-6-1 15:01
一个类如果不声明构造函数时,实例化类时调用默认构造函数即无参构造函数,如果显示声明论文构造函数,想要再实例化类时,使用无参构造函数,必须显示声明
作者:
繁复
时间:
2015-6-1 15:03
父类没有无参构造
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2