美文网首页
技术问 - 什么是继承

技术问 - 什么是继承

作者: sexyhair | 来源:发表于2019-03-06 20:06 被阅读0次

    利用继承可以基于已知存在的类够造一新类,继承已存在的类就是复用这些类的方法和域,还可以添加一些新的方法和域,以满足新的需求。被继承的类称作基类(父类),继承父类的类称作派生类(子类)

    继承的格式:

    class 类名 extends 父类名{}
    

    有继承关系的子父类间的成员变量、成员方法、构造方法之间的关系:

    1)成员变量关系

    子类的成员变量与父类的成员变量名称相同时,使用变量的原则:就近原则,使用的是子类的成员变量(与多态中的成员变量关系结合理解);

    在子类方法中访问一个变量的查找顺序(就近原则):
      A.在子类方法的局部范围查找
      B.在子类的成员范围找
      C.在父类的成员找
    

    2)构造方法关系

    • 子类中所有的构造方法(无论带参与否)默认都会访问父类的无参构造

    • 子类中所有的构造方法的方法体第一句语句默认是super(),为了父类数据的初始化
      若父类没有无参数构造,那么

      • 子类需要通过super(...)去调用父类的其他带参的构造方法
      • 子类需要使用this(...)去调用本类的其他构造方法,且这个构造方法中使用super(...)调用了父类的其他带参的构造方法;

    this(...)和 super(...)第一要放在构造方法的第一句,否则多次初始化父类数据

    3)成员方法关系

    子类的成员方法与父类的成员方法的返回值、方法名、参数列表都相同(这种情况也叫方法重写)时,子类的成员方法覆盖父类的成员方法,调用时使用的是子类的方法;若还想调用父类的方法体则使用super.(...)。此时子类的成员方法权限 >= 父类的成员方法权限

    继承的几个特征:

    JAVA语言不支持多继承
    子类只能继承父类所有的非私有成员
    子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
    不要为了部分功能去继承
    

    有继承关系的子父类在加载时的顺序:

    类加载时,发现其有父类先加载父类,再加载子类。静态修饰内容是随着类的加载而加载的,所以当子父类中有static时,static是最先加载的;类中有静态代码块、构造代码块、构造方法,则执行顺序是:静态代码块>构造代码块>构造方法

    阻止继承

    想要类不能被继承,使用final修饰

    final class 类名 extends 父类名{}
    

    相关文章

      网友评论

          本文标题:技术问 - 什么是继承

          本文链接:https://www.haomeiwen.com/subject/mcmxpqtx.html