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); 程序编译会出错

  • 相关阅读:
    java7底层源码
    google的collection
    2017年八大顶尖的技术趋势
    【译】STM32L4x6系列用户手册第四章
    FRDM-KL43开发板驱动段式液晶SLCD的实现方法
    如何根据丝印查找相关的产品型号
    Arduino Tian开发板:一个功能强大的天气预报中心
    在STM32F746G-DISCO开发板上使用Nabto + FreeRTOS的演示热泵应用
    为LPC1549 LPCXpresso评估板开发基于mbed的项目
    使用LPCXpresso开发板调试外部的电路板
  • 原文地址:https://www.cnblogs.com/jolene-wu/p/8285124.html
Copyright © 2011-2022 走看看