面向对象
面向对象思想
- 类与对象
- 接口与实现
- 继承与封装
- 不可变对象
- 泛型
- 从用户(终端用户,使用你代码的用户)的角度思考问题
- 摒弃完全基于逻辑的思维
类与对象
-
类的成员变量 -> 对象状态
-
类的成员函数 -> 对象行为
-
类的静态变量
-
类的静态函数
-
逻辑结构
1class Employee{
2 void getPaid(BankEndPont bank){
3 bank.payment(name, salary); // this
4 }
5}
类的静态变量和静态函数
- 没有this引用, 金泰变量全局唯一一份
- 普通函数引用静态变量和静态函数? OK
- 对象引用静态变量, 函数? 编译器警告
- 静态函数引用普通成员变量、 函数 ? 编译错误
对象的特殊函数
- 构造函数
- equals
Object 的equals方法默认判断是否为同一个对象 - hashCode
a.hashCode() == b.hashCode() «– a.equals(b) - toString
接口与抽象类
为什么要有接口的概念
- 从用户(使用实现的代码)的角度看看问题
- 由编译器强制的一个模块间协作的合约(Contarct), 强制协作双方无法犯错
- 无成员变量
- 成员函数只有声明不能有实现
接口的声明
- Java : interface
- C++: 一个全部是纯虚函数的类
- Python/ 大部分动态语言: 依靠注释申明
抽象类
至少有一个抽象方法, 抽象方法没有实现;
- 从实现角度看
抽象类可以有成员变量
抽象类可以有部分实现
抽象类不可以多重继承, 接口可以