浅谈面向对象思想(二)

104 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

今天我们来聊一下面向对象的特性。 面向对象有三大特性:封装性、继承性、多态性。

一、封装性

封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。 封装后所有内容对外部不可见,实现对数据和行为的信息隐藏。java的访问权限有private、default、protected、public四种,具体权限如下:

image.png

二、继承性

继承是一种从一般到特殊的演变过程。子类继承父类,就拥有了父类的所有属性和方法,而且能够对父类的方法进行重写,变成自己独有的特性。通过类的继承,使公共的特性得以共享,从而提高了软件代码的重用性。使用extends关键字完成继承。

三、多态性

多态性是指相同的操作、函数或过程可作用于多种类型的对象上,并获得不同的运行结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

多态有两种方式:重写(override)、重载(overload)。 重写和重载的区别如下:

  • 重写要求方法的参数列表必须相同,而重载要求参数列表必须不同。
  • 方法重写仅限于子类重写父类的方法,重载不仅可以重载父类的方法,而且可以重载自身的方法。
  • 重写对方法的访问权限、异常数量、返回类型有特殊要求:子类重写的方法权限必须大于等于父类,子类重写的方法抛出的异常数量必须小于等于父类,子类重写的方法返回类型必须小于等于父类,而重载则不作限制。
  • 一个方法只能被子类重写一次,而一个方法能在该类自身或子类上重载多次。