面向对象的三大特性

 

1.封装

把客观事物封装成抽象的类, 类可以选择把自己的数据和方法只让可信任的类进行操作, 对不可信的进行隐藏.
类 = 数据 + 操作
通过封装, 对象对内部数据和操作进行不同程度的保护, 以防止其他操作意外地改变或错误地使用对象的数据和操作, 发生我们预想之外的非安全操作.

2.继承

通过继承可以使用现有类的所有数据和操作, 并且可以对现有类进行扩展.

被继承的类被称为: 父类 / 基类 / 超类
实现继承的类被称为: 子类 / 派生类

继承的实现方式有两种:

  • 接口继承 接口继承仅使用接口的属性和方法, 但是子类必须提供其具体实现
  • 类继承 类继承直接使用现有类的属性和方法而无需提供其具体实现

    组合也是继承一种, 但有点不太容易理解. 如果对象的变量或者类变量引用了一个对象, 那么我们也就拥有了该对象对外开放的属性和方法, 也可以说间接的”继承“或者说”拥有了“该类的属性和方法.

    3. 多态

    多态是指一个对象的相同方法在不同的情形有不同的表现形式. 多态使得不同内部结构的对象可以共享相同的外部接口.

多态的常见表现形式:

  • 类实现了接口, 将该类传入接口参数.
  • 类继承了父类, 将该类传入父类参数.

很多人认为重载是多态的一种, 但我认为不是, 面向对象的多态是一种运行时的特征, 而不是编译期的特征

参考资料:Hollis面向对象的三大特征 / 重载是不是多态的体现