zoukankan      html  css  js  c++  java
  • 面向对象深入:继承02——隐藏与重载

    11.3 继承中的多态

      在子类中定义了和父类同名的成员变量方法,这就涉及成员的隐藏与重载

    成员的隐藏与重载属于多态特性的一种。

      通过继承,子类拥有除构造方法以外的所有成员(变量及方法),这类成员统称为子类的继承成员,在子类中是默认存在的。

      当子类与父类成员相同时:

    • 父类成员变量会隐藏;
    • 父类成员方法会重载与覆盖。

      这里的隐藏与覆盖并非替换,成员仍然存在,只是默认状态不能使用罢了。

    11.3.1 隐藏——子类与父类的成员变量同名时

    a. 子类就会把父类的变量隐藏起来,该变量默认为子类的成员变量。

    b. 如果强制使用父类成员变量可以使用super关键字。

    11.3.2 重载与覆盖——子类中出现于父类中同名的成员方法时

    a. 子类中的成员方法与父类中的成员方法同名不同参数时——重载,利用参数可以区分它们与,不会互相干扰;

    b. 子类中的成员方法与父类中的成员方法同名同参数时——覆盖,子类中的成员方法会屏蔽继承自父类的成员方法。

    ****关于构造方法能否继承

      构造方法不能被覆盖(屏蔽),也不能继承。父类构造方法必须在子类构造方法中调用:可以隐形调用默认无参构造方法或者用super()语句显性调用有参构造方法;

      若程序中需要显示调用父类构造方法而使用super()语句时,super()必须是子类构造方法定义中的第一句

      若没有,则系统调用默认的super()语句。

    public class Example1107
    {
        public static void main(String[] args)
        {
            SonClass sc = new SonClass();
        }
    }
    
    class SuperClass
    {
        SuperClass( int i )    //父类构造方法,带参数
        {
            System.out.println("SuperClass");
        }
    }
    
    class SonClass extends SuperClass
    {
        SonClass()
        {
            super(1);        //父类构造方法带参数,不能隐性调用,要用super(),super()语句必须是子类构造方法的第一条语句
            System.out.println("SonClass");
         }
    }            

    如果没有super(1); 程序编译会出错

  • 相关阅读:
    学生3D作品---李自立---熊猫(Blender 2.8)
    学生3D作品---李自立---台式电脑加椅子(Blender 2.8)
    Tweak Kernel’s Task Scheduler to Boost Performance on Android [Part 2]
    Tweak Kernel’s Task Scheduler to Boost Performance on Android [Part 1]
    Binder transactions in the bowels of the Linux Kernel
    操作系统原理——实验——作业命名格式
    Linux 引入自动化测试平台 KernelCI
    进程可创建的最大连接数
    Docker—PaaS—微服务
    3D学院人才培养的金字塔模型-张同光-20190924---发言稿
  • 原文地址:https://www.cnblogs.com/jolene-wu/p/8285124.html
Copyright © 2011-2022 走看看