2018/01/08JAVA 基础 / 接口与继承:[Q]:若父类Hero提供了一个有参的构造方法,但是没有提供无参的构造方法。子类应该怎么处理?

在子类中实例化一个ADHero(), 如下第10~13行:

 1 package charactor;
 2   
 3 public class ADHero extends Hero implements AD{
 4   
 5     @Override
 6     public void physicAttack() {
 7         System.out.println("进行物理攻击");
 8     }
 9      
10     public ADHero(){
11          
12         System.out.println("AD Hero的构造方法");
13     }
14      
15     public static void main(String[] args) {
16  
17         new ADHero();
18          
19     }
20   
21 }

再在主方法中通过实例化,其构造方法会被调用。其父类的构造方法也会被调用 ,并且是父类构造方法先调用 ,子类构造方法会默认调用父类的无参的构造方法

[Q]:若父类Hero提供了一个有参的构造方法,但是没有提供无参的构造方法。子类应该怎么处理?以下是父类的有参构造方法:

1 public Hero(String name){
2   this.name = name;
3 }

[A]:由于作为子类,无论如何 都会调用父类的构造方法。默认情况下,会调用父类的无参的构造方法。 但是,当父类没有无参构造方法的时候( 提供了有参构造方法,并且不显示提供无参构造方法),子类就会抛出异常,因为它尝试去调用父类的无参构造方法。

这个时候,子类应该必须通过super去调用父类声明的,存在的,有参的构造方法。

 1 package charactor;
 2    
 3 public class ADHero extends Hero implements AD{
 4     public ADHero() {
 5         super("");//super("")调用的是父类的有参构造方法Hero(String name);
 6     }
 7  
 8     @Override
 9     public void physicAttack() {
10         System.out.println("进行物理攻击");
11     }
12 }
原文地址:https://www.cnblogs.com/lijiehua/p/8242874.html