zoukankan      html  css  js  c++  java
  • 继承&构造函数

    子父类中的构造函数的特点。
    在子类构造对象时,发现,访问子类构造函数时,父类也运行了。
    为什么呢?
    原因是:在子类的构造函数中第一行有一个默认的隐式语句。 super();
    子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
    为什么子类实例化的时候要访问父类中的构造函数呢?
    那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,
    要先看父类是如何对自己的内容进行初始化的。
    所以子类在构造对象时,必须访问父类中的构造函数。 
    为什么完成这个必须的动作,就在子类的构造函数中加入了super()语句。
    如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用
    父类中哪个构造函数。同时子类构造函数中如果使用this调用了本类构造函数时,
    那么super就没有了,因为super和this都只能定义第一行。所以只能有一个。
    但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。
    注意:supre语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。
     
    class Fu
    {
        Fu()
        {
            super();
            show();
            return;
        }
    
        void show()
        {
            System.out.println("fu show");
        }
    }
    class Zi extends Fu
    {
        int num = 8;
        Zi()
        {
            super();
            //-->通过super初始化父类内容时,子类的成员变量并未显示初始化。等super()父类初始化完毕后,
            //才进行子类的成员变量显示初始化。
    
            System.out.println("zi cons run...."+num);
            return;
        }
        void show()
        {
            System.out.println("zi show..."+num);
        }
    }
    class ExtendsDemo5 
    {
        public static void main(String[] args) 
        {
            Zi z = new Zi();
            z.show();
        }
    }
  • 相关阅读:
    思考问题的方式
    领域模型驱动设计读书笔记
    Oracle树形表和递归查询
    java中List , Set , Array相互转换
    JAVA两个数组间元素的比较(找出相同或者不同元素)
    java中的过滤器写法
    打印功能--调整表头
    @WebFilter注解
    深入理解JVM-内存模型(jmm)和GC
    vue生命周期函数
  • 原文地址:https://www.cnblogs.com/xiarongjin/p/8306589.html
Copyright © 2011-2022 走看看