面向对象之继承

面向对象三大特征:

  • 面向对象的三个基本特征是:封装、继承、多态
  • 继承:
    • 继承是一种物结类的层次模型,并且允许和鼓励类的重用,他提供了一种明确表述共性的方法
    • 一个新累可以从现有的类中派生,这个过程称之为继承,新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)
    • 派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要

继承:

  1. 继承的意义
  2. extends关键字
  3. 构造方法与继承
  4. super关键字
  5. 调用父类的构造方法
  6. 方法覆盖的作用
  7. 方法覆盖的规则
  8. super关键字在方法覆盖中的使用

继承的意义:

  • 在现实生活中的继承,可以理解为儿子继承父亲的财产,即为财产重用
  • 面向对象程序设计中的继承,则为代码重用
  • 继承是利用现有的类创建新类的过程中,现有的类称之为基类(或父类),创建的新类称之为派生类(或子类)
  • 复用代码是Java众多引人注目的功能之一;但想要成为具有革命性的语言,仅仅依靠复制代码并加以改变是不够的,它还必须能够做更多的事情,尽可能的复用代码是大家一直都在追求的,继承就是一种复用代码的方法,同时,它也是Java的三大特性之一
  • 继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类
  • 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为

  • 如图所示,最高层是最普遍的、最一般的情况、往下的每一层都比上一层更加具体,并包含有高层的特征,通过这样的层次结构使下层的类能自动享用上层列的特点和性质
  • 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,通过使用继承我们能够非常方便的复用以前的代码,能够提高开发的效率

extends关键字

  • 在Java中,使用extends关键字描述类与类之间的继承关系,其基本用法为:
【访问权限修饰符】 【修饰符】 子类名字 extends 父类名字{子类体}
  • ​​​​​​​由于Java是单亲继承体质,因此在描述类与类的继承关系时。extends关键字后面只能是一个名字,而不是一个列表
  • 实例

  • 构造方法与继承:

  • 通过前面我们知道了子类可以继承父类的属性和方法

  • 但是有一样东西是子类无法继承的:构造方法

  • 对于构造方法而言,他只能被调用,而无法被基础

  • 当构建子列对象时会优先 隐式自动调用父类的无参构造方法 ,而且这个构建调用的过程是从父类 “向外” 递归扩散的,也就是从父类开始子类一级一级地完成构建,即如果C继承自B,而B继承自A,那么构建C的对象时,会先调用A 的构造方法,随后调用B的构造方法,最后调用C的构造方法,以此类推

  • 构造方法的调用次序如下:

​​​​​​​


super关键字:

  • ​​​​​​​Java语言中,要求子类有责任保证它所继承的父类尽快进入到一个稳定、完整的状态中。
  • 如果没有这个约束,那么子类的某个继承父类的方法可能会使用到父类中的一些变量,而这些变量并没有进行初始化,从而产生一些难以预料的后果
  • 如果没有无参的父类的构造方法,子类必须要显示的调用父类的构造方法,而且必须是在子列构造器中做的第一件事
  • 通过super关键字可以在子类构造方法中显示调用父类的构造犯法,该调用必须位于子类的构造方法的第一行

总结:

  • 类的继承有关键字extends确定,Java语言为单亲继承,及一个子类只有一个父类,而一个父类可以有多个子类
  • 子类可以重写父类中某一个方法,称之为方法覆盖,也可以称方法重写,是继承中非常重要的知识点。如果子类需要修改父类继承到方法的方法体,就可以使用方法覆盖
  • 当构建子类对象时会优先调用父类的无参构造方法,而且这个构建调用的过程是父类“向外”递归扩散的,也就是说,从父类开始向子类一级一级完成构建,列如:如果c继承自b,而b继承自a,那么构建c的对象时,会优先调用a的构造方法,然后调用b的构造方法,最后调用c的构造方法,以此类推
  • 如果没有无参的父类构造方法,子类必须使用super显示的调用父类的构造方法,而且必须是在子类构造器中做的第一件事
  • this引用对象自身、调用自己的构造方法,而super调用的则是父类定义的成员变量、方法或构造方法,super不能当做引用传递给其他调用者但是this可以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值