zoukankan      html  css  js  c++  java
  • JAVA继承时构造函数的问题

    今天看到java继承部分时,关于构造函数是否继承以及如何使用时遇到了点问题,后来查找相关资料解决了。

    下面是我个人的总结:

    先创建一个父类,里面有两个构造函数:

    public class Jisuan {
    
        protected int a=4;
      //构造函数1
        Jisuan()
        {
            System.out.println("父类的无参数构造函数");
        }
       //构造函数2
        Jisuan(int a)
        {
            System.out.println("父类的有参数构造函数");
        }
        }

      再创建一个子类,里面也有两个构造函数:

    public class JisuanKid extends Jisuan {
        //构造函数3
        public JisuanKid() {
            System.out.println("子类的无参数构造函数");
        }
        //构造函数4
        public JisuanKid(int a) {
            System.out.println("子类的有参数构造函数");
        }
    }

    再创建第三个类;

    public class TestArray {
    
        public static void main(String[] args){
        JisuanKid jisuan = new JisuanKid(3);
    }
    }

    1、此时执行:

    结果:

    父类的无参数构造函数
    子类的有参数构造函数
    2、去掉构造函数1

    结果:出错

    3、去掉构造函数1和2

    执行结果:

    子类的有参数构造函数
    4、去掉构造函数4
    执行结果:
    父类的无参数构造函数
    出现错误

    结论如下

    1.子类不能继承父类的构造函数
    2.若父类中无任何构造函数,则系统默认加上无参数构造函数,创建子类对象时会调用父类的默认无参数构造函数创建父类。然后再调用子类的相应构造函数
    3.若父类中有带参数构造函数,则系统不会添加默认无参数构造函数,创建子类对象时会调用父类的无参数构造函数创建父类对象,因为此时父类没有无参数构造函数,故会报错。
    4.另外还可以在子类的构造函数中,使用super()或者super(参数名)来使用父类的无参数构造函数和带参数构造函数

  • 相关阅读:
    一道模拟赛题
    Codechef Union on Tree
    BZOJ3435: [Wc2014]紫荆花之恋
    BZOJ3924: [Zjoi2015]幻想乡战略游戏
    BZOJ4372: 烁烁的游戏
    BZOJ3730: 震波
    BZOJ4317: Atm的树+2051+2117
    [六省联考2017]相逢是问候(扩展欧拉定理+预处理幂)
    「BJOI2018」治疗之雨(概率+高斯消元转递推)
    「BJOI2018」链上二次求和(线段树)
  • 原文地址:https://www.cnblogs.com/beiyan/p/4232145.html
Copyright © 2011-2022 走看看