Java面向对象的三大特性 - 封装、继承、多态

Java是一门面向对象的编程语言,而面向对象编程有三大重要的特性,那就是封装、继承、多态。

一、封装

封装 ,就是尽可能地隐藏对象内部的部分属性和实现细节,将对象的属性和操作结合成一个独立的整体,对对象数据的访问只能通过对外暴露的接口进行。

通俗点讲,就是类似于我们平时使用的空调,空调的各种零件被封装在空调外壳中,只通过对外暴露的遥控器进行操作,具体的制冷原理被隐藏了起来。

封装的好处在于:

  • 良好的封装可以减少耦合
  • 可以对用户对类的修改进行更精确的控制
  • 类内部的实现可以自由修改,不需要修改调用该类的代码
  • 隐藏信息和实现细节,保护了私有数据,减少了模块间的干扰,降低了程序复杂性,提高了可控性

二、继承

继承 ,就是子类继承父类的特征和行为,子类拥有父类的属性和方法。

在Java中,继承是以已存在的类的定义为基础创建新类的技术,新类可以增加新的数据和功能,也可以使用父类的功能,覆盖父类同名方法的操作称为 重写

总结来说就是:

  • 子类拥有父类非private的属性和方法
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
  • 子类可以用自己的方式实现父类的方法(重写

在继承中还有一个重要的概念, 向上转型

向上转型 指的是可以将子类转换成父类,因为子类拥有父类所有公开的属性和方法,这种转换操作是安全的,唯一发生变化的就是父类私有属性和方法的丢失。因为该操作在继承关系上面是向上移动,所以称为向上转型。

继承存在诸多缺陷,所以在使用的时候需要谨慎,原因如下:

  • 父类发生变化,子类就必须跟着变
  • 继承破坏了封装,父类的实现细节对于子类是透明的
  • 继承是一种强耦合的关系

三、多态

多态 指的是对于一个行为,不同的子类有不同的表现形式。同一个接口,使用不同的实例对象执行不同的操作。

什么时候需要用到多态呢?举个例子,我们需要商品在不同活动下有不同的价格,这时候,我们只需要定义一个计算活动价格的接口,然后让不同活动实现这个接口,就可以做到灵活扩展,而不需要修改计算商品价格的逻辑,当有新活动的时候,只需要再编写一个实现类即可。

多态的优点:

  • 消除类型之间的耦合关系
  • 使程序有良好的扩展,可以添加更多类型的子类实现功能的扩展,不需要修改基于父类的代码

多态的实现方式:

  • 重写
  • 接口
  • 抽象类和抽象方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容