zoukankan      html  css  js  c++  java
  • 子类调用父类的构造函数几种情况

    1.1当父类中同时有无参和有参构造函数时,子类继承父类,调用子类的无参构造函数,这是无论写不写super();其结果都一样,都是先调用父类的无参构造,再调用子类的无参构造,代码如下

    class Father{
        String s="aaaaaaaa";
        public Father(String s) {
            this.s = s;
            System.out.println(s+"我是father有参构造");
        }
        public Father() {
            System.out.println(s+"我是father无参构造");
        }
    }
    class Son extends Father{
    
        public Son() {
            //super();这里写不写super不影响结果
            System.out.println(s+"我是son无参构造");
            
        }

      /*public Son(String s) {
            super(s);
            System.out.println(s+"我是son有参构造");;
        }*/ }
    public class Test1 { public static void main(String[] args) { Son s1=new Son(); } }

    输出结果:

    aaaaaaaa我是father无参构造
    aaaaaaaa我是son无参构造

    1.2如果父类中并没有无参和有参的构造方法,系统会默认帮你创建一个无参构造方法,程序也会执行

    输出结果:

    aaaaaaaa我是son无参构造

    1.3如果父类中存在有参构造方法,没有无参构造方法,这时系统不会帮你创建无参构造方法,程序会发生异常

    输出结果:

    Implicit super constructor Father() is undefined(父类的无参构造方法未定义)

    2.1子类是有参构造时,

    class Father{
        String s="aaaaaaaa";
    
        public Father(String s) {
            this.s = s;
            System.out.println(s+"我是father有参构造");
        }
        public Father() {
            System.out.println(s+"我是father无参构造");
        }
        
    }
    class Son extends Father{
    
        public Son() {
            //super();
            System.out.println(s+"我是son无参构造");
            
        }
    
        public Son(String s) {
            super(s);//有无super,区别
            System.out.println(s+"我是son有参构造");;
        }
        
    }
    public class Test1 {
    
        public static void main(String[] args) {
            Son s1=new Son("hello");
        }
    
    }

    有super时调用父类有参构造,无super时,调用父类无参构造

    console结果:

    hello我是father有参构造
    hello我是son有参构造

    ----------------------------------------

    aaaaaaaa我是father无参构造
    hello我是son有参构造

  • 相关阅读:
    简单的BMCP位图图片压缩算法
    163相册验证码图片的识别手记之二 识别
    认父亲的DbParameter!!
    文件同步精灵(初版)
    163相册验证码图片的识别手记之一 去除干扰
    C#中WebService里的回车符"\r"丢失问题
    PHP 杂谈《重构改善既有代码的设计》之二 对象之间搬移特性
    PHP5计划任务离线功能的原理
    (转)程序员疫苗:代码注入
    window7环境,不安装Oracle,使用PL/SQL Developer结合oracle精简客户端,管理Oracle数据库
  • 原文地址:https://www.cnblogs.com/lbloveab/p/7248557.html
Copyright © 2011-2022 走看看