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

技术问 - 什么是继承

作者: 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 父类名{}

相关文章

  • 技术问 - 什么是继承

    利用继承可以基于已知存在的类够造一新类,继承已存在的类就是复用这些类的方法和域,还可以添加一些新的方法和域,以满足...

  • JavaScript Mixin模式

    Mixin模式,混合模式。这是一种不用继承就可以复用的技术。主要还是为了解决多重继承的问题。多继承的继承路径是个问...

  • Python:类继承

    灵魂三问: 什么是继承?为什么要继承?如何用继承? 1.继承 继承是一种创建新的类的方式,新创建的叫子类,继承的叫...

  • 技术问 - 什么是接口

    接口(interface):这种技术主要用来描述类具有什么功能而并不给出每个功能的具体实现。接口不是类,而是对类的...

  • 探索 React 中 es6 的继承机制

    什么是继承呢? 继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一...

  • js-继承和闭包

    继承和闭包 一、面向对象的三大特征 封装 继承 多态 二、什么是继承 继承是面向对象软件技术当中的一个概念,与多态...

  • JS 中继承的写法

    什么是继承 继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别B“继承自”另一个类...

  • Objective-C 快速入门--基础(二)

    1、什么是继承?OC中的继承有哪些特点? “继承”是面向对象软件技术当中的一个概念。如果一个类A继承自另一个类B,...

  • 面向对象技术扫盲(一)

    面向对象技术技术盲点 1、到底什么是面向对象 面向对象=对象+分类+继承+用消息通信 OOP=Object+Cla...

  • 高级类(三)

    何时以及为什么要子类化。 本章介绍了类的继承,以及子类化相关的众多编程技术。 但是你可能会问,“什么时候我应该子类...

网友评论

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

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