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();
        }
    }
  • 相关阅读:
    云原生时代,微服务到底应该怎么玩儿?
    坐上机器猫的时光机,来一场科技穿越之旅吧
    喜讯|京东荣获2019 【中国技术品牌影响力企业】
    非洲正在打造一个与硅谷完全不同的人工智能产业
    DevOps专题|基础Agent部署系统
    《编写可读代码的艺术》总结
    《Effective Java第二版》总结
    MySQL之备份和还原
    MySQL之Xtrabackup的使用
    MySQL之mysqldump的使用
  • 原文地址:https://www.cnblogs.com/xiarongjin/p/8306589.html
Copyright © 2011-2022 走看看