面向对象的基本特征及原则

面向对象的基本特征

  1. 抽象
  2. 封装
  3. 继承
  4. 多态

抽象

抽象就是指忽略一些我们目标所需之外的东西

封装

是对象和类概念的主要特性。封装是把过程和数据包围起来,只提供一个接口供用户使用,这样提高了代码的安全性,以及使用的简便性

继承

子类可以使用父类的所有功能,并在无需重新编写父类的情况下对这些功能进行扩展。

多态

多态是指允许不同类对象对同一消息做出反应,同一消息被不同的对象响应可以造成不同的结果

1
2
3
4
5
6
7
8
9
10
11
//多态的三个必要条件
//继承
//重写
//父类引用指向子类对象:Parent p = new Child();
class Animal
class Cat extends Animal
//编译看左边,运行看右边
Animal animal = new Cat(); // 向上转型
animal.eat(); // 调用的是 Cat 的 eat
Cat c = (Cat)animal; // 向下转型
c.work(); // 调用的是 Cat 的 work

重载:在一个类里面,方法名字相同,参数的个数、类型、顺序有一个或多个不同。返回类型可以相同也可以不同。

重写:在子类中,方法名字相同,参数列表相同,访问权限大于等于父类,返回值类型和异常小于等于父类

面向对象的基本原则

(1条消息) 面向对象的五大基本原则_夏沐的博客-CSDN博客_面向对象基本原则

  1. 单一职责
  2. 开放闭合
  3. 里氏替换
  4. 依赖倒置
  5. 合成聚合复用
  6. 接口隔离
  7. 迪米特法则

单一职责

每一个类应该专注于做一件事情

开放闭合

面向扩展开放,面向修改关闭

里氏替换

超类存在的地方,子类是可以替换的

依赖倒置

实现尽量依赖抽象,不依赖具体实现

合成聚合复用

尽量使用合成/聚合达到复用,尽量少用继承

接口隔离

应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口

迪米特法则

又叫最少知识原则,一个软件实体应当尽可能少的与其他实体发生相互作用