zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    jquery 序列化form表单
    nginx for windows 安装
    nodejs idea 创建项目 (一)
    spring 配置 shiro rememberMe
    idea 2018 解决 双击shift 弹出 search everywhere 搜索框的方法
    redis 在windows 集群
    spring IOC控制反转和DI依赖注入
    redis 的安装
    shiro 通过jdbc连接数据库
    handlebars的用法
  • 原文地址:https://www.cnblogs.com/lijiehua/p/8242874.html
Copyright © 2011-2022 走看看