zoukankan      html  css  js  c++  java
  • Java-继承与覆盖【摘抄】

    继承

    (1)java不支持多重继承,也就是说子类至多只能有一个父类

    (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法

    (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承

    (4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。

    1.构造函数:
            当子类继承一个父类时,构造子类时需要调用父类的构造函数,存在三种情况
            (1),父类无构造函数或者一个无参数构造函数,子类若无构造函数或者有无参数构造函数,子类构造函数中不需要显式调用父类的构造函数,系统会自动在调用子类构造函数前调用父类的构造函数
             (2),父类只有有参数构造函数,子类在构造方法中必须要显示调用父类的构造函数,否则编译出错
             (3),父类既有无参数构造函数,也有有参构造函数,子类可以不在构造方法中调用父类的构造函数,这时使用的是父类的无参数构造函数
               //以上三个结论已经过代码验证
    2.方法覆盖:
              (1)子类覆盖父类的方法,必须有同样的参数返回类型,否则编译不能通过
              (2)子类覆盖父类的方法,在jdk1.5后,参数返回类可以是父类方法返回类的子类
             (3)子类覆盖父类方法,可以修改方法作用域修饰符,但只能把方法的作用域放大,而不能把public修改为private
              (4)子类方法能够访问父类的protected作用域成员,不能够访问默认的作用域成员
             (5)子类的静态方法不能隐藏同名的父类实例方法
             (6)java与C++一样,继承的方法具有多态性
             //以上6个结论已经过代码验证
    3.成员覆盖:
             (1)当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量
              这个听起来很容易理解的一回事,但是实际使用过程中很多人容易搞混:尤其是在多态的时候,调用一个被继承的方法,该方法访问是一个被覆盖的成员m,那么方法中到底是访问了父类的成员还是子类的成员m?结论是,若实际调用的是父类的方法,就使用了父类的该成员m,若实际调用的是子类的方法,就使用子类的成员m,记住一句,每个类使用成员都相当于在前面加了 一个this指针。

                                                                  stonecao -CSDN

  • 相关阅读:
    Javascript
    Linux折腾
    arch linux 教程
    fedora 安装 网易云音乐
    angularJS
    vim以超级用户权限保存文件
    Laravel 安装
    nginx
    xargs 简单功能
    yum 安装 php5.6 和 mysql5.6
  • 原文地址:https://www.cnblogs.com/Sample1994/p/6528488.html
Copyright © 2011-2022 走看看