• 面向对象深入:继承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); 程序编译会出错

  • 相关阅读:
    财报就像一本故事书270页完整版本.pdf
    洛克菲勒留给儿子的38封信打包下载
    pip-20.2.3.tar.gz安装包下载
    python-3.8.6rc1-amd64.exe安装包下载
    apache-maven-3.6.3-bin.tar.gz 安装包下载
    中文拼音排序 element-ui的table web端实现
    vue中用axios下载后端的文档流(excel)
    git历史重写
    AMQP
    TODO
  • 原文地址:https://www.cnblogs.com/jolene-wu/p/8285124.html
Copyright © 2020-2023  润新知