一、类的封装
(一)封装定义:隐藏类中的属性和实现细节,对外只提供公共的访问方式。
(二)封装优点
- 1.安全性;
- 2.可以使用流程控制语句对值进行限制;
- 3.只能用 我提供的 访问方式来访问。
(三)语法:
- 1.setter访问器
public void set属性名(参数){
赋值;
}
- 2.getter访问器
public 类型 get属性名(){
return 属性值;
}
二、类的继承
为什么要继承?有些类有共有的属性,可以不用每次都创建新的类,可以共有部分进行继承,只修改独特部分。
根据已有的类派生出新类的技术。java只支持单继承。
(一)优势
1.代码重用;
2.便于维护(高耦合性,高的紧密连接程度);
(二)用法
- 1.子类可以继承父类所有除以private以外的所有属性和方法
- 2.构造器:创建子类对象时是先调用父类构造器,先构造父类的属性,再构造子类的。
(三)子类继承父类各种修饰符修饰的属性的情况:
1.private:包内包外都不能继承private修饰的属性;
2.默认修饰符:同包内可以继承,不同包不行;
3.protected:同包内可以继承,不同包不行;
4.public:包内包外都可以。
(四)父类又叫超类,基类。
(五)方法重写:子类中有和父类重名的方法叫做对父类方法的重写(这两个方法方法名,参数列表,返回值类型都和父类一样)。/**@override可以请求系统检查是否满足重写规则。
- 在子类的定义中,如果方法重写后,如果还想调用原父类的方法,用super关键字。
注意:
- 只能重写实例成员方法,静态不行;
- 子类方法的访问修饰符不能比父类更严格(如父类是public,子类必须public,而不能是private);
- 返回值类型和父类相同或子类可以是父类的子类型(即如果返回值类型是类,则子类的返回值类可以继承自父类。)
- 参数一样或父类擦除后和子类相同;
- 子类不能比父类异常范围更大;
- 在多重继承时,子类可以继承直接父类的成员,也可以继承渐渐父类的成员。
(六)构造器
子类不能继承父类构造器,但创建子类对象时,会先执行父类构造器。如果子类构造器不显式调用父类构造,系统会默认调用父类的无参构造,即默认添加super();语句,如果父类没有无参构造器,子类必须手动写上父类的有参构造器,并对其进行传参。(super关键字只能在类定义时用,不能在对象中使用)
(七)final关键字:
1.修饰类时:该类不能被继承。
2.修饰方法时:不能被子类重写;
3.修饰属性时,值永远不能更改,即使在本类。命名用全大写字母,如果有多个大写字母,用下划线连接。
4.修饰对象时,表示该对象不能被修改(?),但是对象里的值可以修改
(八)里氏替换原则:所有的子类都是父类
(九)设计类的继承关系需注意:
- 1.不要超过三层;
2.可以被子类继承的类应该尽量封装且写清楚设计文档:
对所有用户都开发用public; 只对子类开放用protected;对所有用户都开放,又不想被子类更改,用final。
(十)super()的用法:
1.super作用:
- 1)区分父类和子类同名的成员
- 2)调用父类构造器
- 3)调用父类的成员变量和成员方法;
2.super位置:子类构造器的第一行代码处,注意不能与this同时出现
3.注意事项:
- 1.子类构造器中没有显式调用父类构造或本类构造,那么系统会自动分配一个super()调用父类的无参构造;
- 如果父类中没有无参构造,那么,需要在父类中补充无参构造其或在子类中显式调用父类的带参构造器。
三、组合
类中的属性是别的类。
四、面向对象(类及其所使用的常用修饰符)
(一)总修饰符
- 权限修饰符:private,默认,protected,public
- 状态修饰符:static final
- 抽象修饰符:abstract
(二)可用于类的修饰符
- 权限修饰符:默认,public(用的最多)
- 状态修饰符:final
- 抽象修饰符:abstract
(三)可用于成员变量的修饰符
- 权限修饰符:private(用的最多),默认,protected,public
- 状态修饰符:static final
(四)可用于构造方法的修饰符
- 权限修饰符:private,默认,protected,public(用的最多)
(五)可用于成员方法的修饰符 - 权限修饰符:private,默认,protected,public(用的最多)
- 状态修饰符:static final
- 抽象修饰符:abstract
五、UML图
类图画法:
http://www.uml.org.cn/oobject/201610282.asp
(一)泛化(继承)
访问修饰符:
- private -
- 默认 不用
- protected #
- public +
(二)实现 (接口)
(三)依赖(使用)
- 体现:局部变量,参数
(四)关联(拥有)
- 体现:成员变量
- 三种关联关系:
- 1:1
- 1:n
- m:n
(1)聚集(聚合):强关联
整体和局部的关系。
局部离开了整体可以独立存在。
1)组合 :强聚集
整体和局部的关系
局部离开了主体不能独立存在