Java核心基础-理解继承

Java面向对象的3个基本特征:封装,继承和多态

什么是继承?

《Java核心技术》中的定义是:通过扩展一个类来建立另外一个类的过程称为继承(inheritance)。

例如,我们通过扩展Employee类建立了Manager类,他俩之间存在着明显的“is-a”关系,即每个Manager都是一名Employee。

public class Manager extends Employee{
    // ...
}

其中Employee类称为超类(superclass),基类(base class)或父类(parent class)

Manager类称为子类(subclass),派生类(derived class)或孩子类(child class)

父类和子类之间有哪些关系?

  1. 子类和父类之间是一种强耦合关系,因为对于父类来说,它的实现细节对子类是透明的,同时父类改变子类也一定会跟着改变,这其实是对封装特性的一种破坏,所以在使用继承时要先考虑一下这是否是必要的
  2. 父类中放一些通用的属性和方法,特殊的属性和方法放在子类中
  3. 子类可以通过super关键词调用父类里的方法或构造器
  4. 编译器会自动地给子类调用父类的构造器,这意味着,我们在构建一个子类前已经先构建了它的父类
  5. 通过子类对象调用方法时,如果子类中重写了这个方法将优先调用子类方法,否则调用父类方法

继承有什么好处?

  1. 极大地提升代码的重用性:子类可以直接使用父类已有的属性和方法
  2. 提升程序的可维护性:想象一下,我们定义了一个Car类,以它为父类扩展了很多种Car子类,在过去100年的时间里,Car都通过一个fillOil()方法加油,但是今天的Car需要增加charge()方法充电,我们只需要在Car父类里新增这个方法就可以了

Java为什么不支持多继承?

Java规定一个类只能extends另外一个类,称为单继承。而在C++等语言中,是支持多继承的,为什么Java没有这样做呢?

主要原因是避免出现二义性问题,可以参考另外一篇博客:

Java为什么不支持多重继承_许大侠0610的博客-CSDN博客_java可以多重继承吗

但是Java允许一个类实现多个接口,一定程度上能够弥补不支持多继承带来的不方便。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值