继承(背背背)

继承

什么是继承?

  1. Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起父子关系(子类extends父类,子类更强大)
  2. 子类(派生类)、父类(基类或超类)
  3. 子类可以直接使用父类公共的属性和方法

好处:提高代码的复用性

继承设计规范

  1. 子类们相同特征放在父类中定义,子类独有的属性和行为应该定义在子类自己里面
  2. 因为如果子类的独有属性、行为定义在父类中,会导致其它子类也会得到这些属性和行为,这不符合面向对象逻辑

内存图

创建子类对象时,在堆内存中开辟的对象空间包括:子类空间(this)和父类空间(super)
在这里插入图片描述

继承的特点

  1. 子类可以继承父类的属性和行为,但是子类不能继承父类的构造器
  2. Java是单继承模式,一个类只能继承一个直接父类
  3. Java不支持多继承,但是支持多层继承
  4. Java中所有的类都是Object类的子类
  5. 对于多层继承,出现相同的方法(当内容有出入),子类继承就近的方法

私有、静态成员继承有争议,自己可以看看别人的文章,看看自己更偏向于哪种解释

继承后,成员变量、方法的访问特点
就近原则

  1. 先子类局部范围找
  2. 然后子类成员范围找
  3. 然后父类成员范围找,如果父类范围还没找到则报错
  4. 如果子父类中,出现了重名成员,会优先使用子类的,如果一定要在子类中使用父类的,可以用super.成员变量/成员方法

方法重写

  1. 在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类的这个方法是重写的方法
  2. 应用场景:子类需要父类功能,但该功能不能完全满足自己的要求时

@Override重写注解

  1. @Override是放在重写后的方法上,作为重写是否正确的校验注解, 加上该注解后如果重写错误,编译阶段会出现错误提示
  2. 提高程序的可读性,代码优雅

重写注意事项

(声明不变重新实现)

  1. 重写方法的名称、形参列表必须和被重写方法的一模一样
  2. 私有方法不能被重写
  3. 子类重写父类方法时,访问权限必须大于或者等于父类(缺省<protected<public)
  4. 不能重写静态方法,如果重写会报错

子类继承父类后构造器的特点

  1. 子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己(子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类无法使用父类的数据)
  2. 子类初始化之前,一定要调用父类构造器完成父类数据空间的初始化
  3. 子类构造器的第一行语句默认都是:super();不写也存在

如果父类中没有无参数构造器,只有有参构造器,会怎么样?
子类会报错
解决:子类构造器中可以通过书写super(……)(填对应构造器的参数),手动调用父类的有参数构造器
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

★Object★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值