面向对象技术三大特性
继承
- 什么是继承(inheritance)
- 继承提供一种方式,可以根据现存的类创建新的类
- 新的类可以继承现有类的所有
non-private属性和方法 - Java中利用
extends关键字实现继承
IS AV.SHAS A- 对象间如果是 IS A 关系就可以使用继承
- 继承相关术语与语法
- SuperClass(Parent Class/Base Class 基类)
- 能让别的类继承
non-private属性/方法
- 能让别的类继承
- SubClass(Child Class/Derived Class 派生类)
- 继承别的类
- 语法:class SubClass extends SuperClass {}
- SuperClass(Parent Class/Base Class 基类)
- instanceof 关键字
- 用途:判断是否是某个类的实例
- 语法:实例 instanceof 类
- 返回 boolean
子类实例也是父类的实例,但父类实例不是子类的实例
-
super 关键字
- 用于在子类中指代父类的对象
- 用法
- 访问父类属性
- 访问父类方法
- 构造器:在创建子类对象时,会同时创建父类对象(通过隐式调用父类的构造器)
-
方法重写 Override
- Override:子类重写父类方法
- 核心:用自身行为代替父类行为
- 如何重写:
- 方法名,参数列表照抄
- 返回值类型要和父类一样(或者是subType)
- 访问权限可以大于等于父类方法的访问权限
-
protected 继承访问权限
- 使用关键字
protected进行权限控制 protected权限可以被本包中的其他类和其他包中的子类访问
- 使用关键字
-
final 关键字
- 修饰变量:变量不可重新赋值
- 修饰方法:方法不可被
override - 修饰类:类不能被继承
-
深入 Object 类
Object类是所有类的父类Object类的属性/方法可被所有Java对象使用- 没有写
extends默认继承 Object - 两个核心方法:
- toString
- equals
封装(encapsulation)→ 实现手段:访问权限
- 数据隐藏:隐藏类的内部工作原理,并简单地提供一个接口,外部世界可以通过该接口与类进行交互,而不知道内部发生了什么
- OOP中的封装是指将数据和操作该数据的方法绑定在一个单元(类)中
- 好处:好维护,好修改,好限制
- 高内聚,低耦合
- 封装的每个类最好是单一职责(Single class / Single unit):
- 私有属性
- 对外的方法
public(getter/setter 修改属性) - 仅给本类用的方法
private
多态(polymorphism)
- poly = many morph = forms
- 为不同数据类型的实体提供统一的接口,或使用一个单一的符号来表示多个不同的类型
- 记忆例子:正方形,圆形,三角形,六边形都是平面图形,都可以计算面积,但是它们有不同的面积计算公式
对象转型(Cast)
- 向上转型:Sub Class → Super Class
- 向下转型:Super Class → Sub Class
- 向上转型是自动的,向下转型是强制的
- 向下转型并不是所有转型都能成功,必须根据实例化的类型来转型