java继承

[复制链接]
查看11 | 回复5 | 2012-10-15 16:15:09 | 显示全部楼层 |阅读模式
你的Child()类继承了Parent2类Parent2类继承了Parent1类。当你Child child = new Child()的时候程序会先从最顶级的类开始实例化循序为Parent1-->Parent2-->Child 当实例化Parent1的时候,因为你为Parent1写了一个构造方法Parent1(String s){
System.out.println(s); }但当你没有去调用它的时候程序会去找Parent1的无参构造方法Parent1(){}所以就找不到解决方法 在类中加入一个构造方法:Parent1(){System.out.println(“Parent1”);}...
回复

使用道具 举报

千问 | 2012-10-15 16:15:09 | 显示全部楼层
1,首先调用Child类的默认构造器Child();2,在Child类的默认构造器里会自动调用其父类的无参构造器也就是Parent2();3,在无参构造器Parent2();的第一行会自动调用其父类Parent1的无参构造器,不过因为其父类Parent1拥有有参构造器,所以系统就不会为其创建无参构造器4,综上所述,结果就会出现编译错误!...
回复

使用道具 举报

千问 | 2012-10-15 16:15:09 | 显示全部楼层
Parent1类给出了一个构造器:Parent1(String s){
System.out.println(s);
}那么默认的无参构造器就失效了,所以在使用无参构造器实例化Parent1的子类时会提示错误...
回复

使用道具 举报

千问 | 2012-10-15 16:15:09 | 显示全部楼层
当存在继承关系时,new子类实例时它会在调用子类的构造函数之前自动调用父类的无参构造函数;当new child() 时,它会自动调用parent2的构造函数,而parent2和parent1又存在继承关系,所以它首先会调用parent1的无参构造函数,由于你已经写了一个parent1的有参构造函数,所以必须写一个parent1的无参构造函数。...
回复

使用道具 举报

千问 | 2012-10-15 16:15:09 | 显示全部楼层
Parent1作为父类,应该提供Parent1() {}空构造器。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行