面向对象二
-
分类管理程序代码
-
重用类代码
- 组合
- 继承
-
多态
- 程序的多义性
- 提高可重用性
-
抽象类与接口
-
1.重用类代码
- 用类定义对象(类的四要素)
- 字段成员
- 方法成员
- 构造方法
- 个成员的访问权限
- 用类定义对象(类的四要素)
-
2.用类定义新类
- 组合
- 继承
-
类的组合
- 在定义新类时,使用已有的类代码来定义字段,这些字段是类类型的对象,称为对象字段,Java将包含对象字段的类称为组合类,
- 组合类的成员包括两种
- 类类型的对象字段
- 基本数据类型的的非对象字段
- 调用方式
- 组合类对象名 . 非对象字段名
- 组合类对象名 . 对象字段名 . 对象字段的下级成员
- 对象的二次封装
- 对组合类的对象成员设置权限
- 组合类的构造方法
- 为对象字段创建对象
- 在构造方法中为对象字段创造对象
c1 = new Clock();
- 在定义对象时创建对象
public Clock c1 = new Clock();
- 向构造方法传递已经创建好的对象
public DualClock (Clock p1 , Clock p2) {
c1 = p1;
c2 = p2;
}
DualClock obj = new DualClock(new Clock (),new Clock() );
- 直接引用组合类对象的对象字段
public DualClock (DualClock p ) {
c1 = p.c1;
c2 = p.c2;
}
包装类 : 可以对一个已有类进行重新包装(wrap) 目的是为了调整或者增强类 ,也可以说时一个组合类,将已有的类,作为对象字段
- 继承和扩展
- 设计新类时可以继承已有的类,这个已有的类称为超类或者父类.
- 在继承超类的基础上进行扩展,或者对继承的超类成员进行重新定义,又称为覆盖是复写,这样得到的类可以称为子类
- 子类成员
- 一种是从超类继承来的超类成员
- 一种是子类在定义时添加的成员或方法称为子类成员
- 子类的定义
[public] class 子类名 extends 超类名 {
//新添加的子类成员
//重写的超类成员
}
- 子类使用extends关键字,指定所继承的超类,在此基础上扩展,一个类只能继承一个超类,单继承
- 子类会继承超累中出来静态方法和构造方法的所有成员,子类中的超类成员会保持原有的权限
- 子类可以重写超类成员,即添加和超类成员同名的字段,或者相同签名的方法,子类成员将覆盖在超类方法上,重写的目的时体寒或者是增强超类的方法.
- 可以通过super关键字来访问被覆盖的超类成员.
eg
super.方法名();
super.字段名;
super();
- 访问重名成员,访问到的是子类的重写方法
访问权限
- public
- protected
- default
- private
子类的构造方法
超类成员 ---- 调用超类的构造方法 super(参数列表);
子类成员
- 子类可以在三个位置对字段成员初始化