zoukankan      html  css  js  c++  java
  • 【PHP】【java】执行父类构造函数之间的差异

    • PHP,如果子类有构造函数,就不会再去调用父类的构造函数,如果子类的构造函数为空,则取调用父类的,如果父类的构造函数为空,那就调取父类的父类构造函数,以此类推,直接到默认的构造函数
    • JAVA,子类总是调用父类的构造函数,不管子类是否有构造函数(一般都有),如果子类没有调用父类的构造函数的代码,那默认调用的是父类的无参数的构造函数(隐式调用),如果是多重继承,隐式调用就会很长

    *** 附上测试代码 ***

    <?php
    
    class A {
        function __construct()
        {
            echo 33;
        }
    }
    
    class B extends A{
    //    function __construct()
    //    {
    //        echo 22;
    //    }
    }
    
    class C extends  B{
    //    function __construct()
    //    {
    //        echo  11;
    //    }
    }
    
    new C();
    
    class BaseClass {
        BaseClass() {
            System.out.println("HELLO");
        }
    }
    
    class SuperClass extends BaseClass{
        private int n;
        SuperClass(){
            System.out.println("SuperClass()");
        }
        SuperClass(int n) {
            System.out.println("SuperClass(int n)");
            this.n = n;
        }
    }
    // SubClass 类继承
    class SubClass extends SuperClass{
        private int n;
    
        SubClass(){ // 自动调用父类的无参数构造器
            System.out.println("SubClass");
        }
    
        public SubClass(int n){
            super(300);  // 调用父类中带有参数的构造器
            System.out.println("SubClass(int n):"+n);
            this.n = n;
        }
    }
    // SubClass2 类继承
    class SubClass2 extends SuperClass{
        private int n;
    
        SubClass2(){
            super(300);  // 调用父类中带有参数的构造器
            System.out.println("SubClass2");
        }
    
        public SubClass2(int n){ // 自动调用父类的无参数构造器
            System.out.println("SubClass2(int n):"+n);
            this.n = n;
        }
    }
    public class TestSuperSub{
        public static void main (String args[]){
            System.out.println("------SubClass 类继承------");
            SubClass sc1 = new SubClass();
            SubClass sc2 = new SubClass(100);
            System.out.println("------SubClass2 类继承------");
            SubClass2 sc3 = new SubClass2();
            SubClass2 sc4 = new SubClass2(200);
        }
    }
    

    注:java测试代码部分引用菜鸟教程(特此说明)

  • 相关阅读:
    Codeforces 1485C Floor and Mod (枚举)
    CodeForces 1195D Submarine in the Rybinsk Sea (算贡献)
    CodeForces 1195C Basketball Exercise (线性DP)
    2021年初寒假训练第24场 B. 庆功会(搜索)
    任务分配(dp)
    开发工具的异常现象
    Telink MESH SDK 如何使用PWM
    Telink BLE MESH PWM波的小结
    [LeetCode] 1586. Binary Search Tree Iterator II
    [LeetCode] 1288. Remove Covered Intervals
  • 原文地址:https://www.cnblogs.com/china-flint/p/11389584.html
Copyright © 2011-2022 走看看