面向对象的三大特性
三大特性:高内聚、低耦合
一、 封装:隐藏内部细
1、访问权限(可见性)
Public:(随处可见)所有包、类导入后均可见 公共的
Protected:(合法继承)本身、不同包的子类自身,
Default:(家庭和睦)本类、同包类可见
Private:(自私自利)只在本类中可见
本类 |
同包类 |
public |
protected |
default |
private |
不同包类 |
public |
protected |
default |
|
|
子类 |
子类 |
public |
Protected(子类中,且子类自身使用) |
|
|
其他类 |
public |
|
|
|
2、 JavaBean-->PO 封装数据
(1)、属性-->private(私有属性,公开方法,不用默认)
(2)、方法--> public protected
二、 继承 :子承父业(延续和拓展) 目的是尽量达到代码的重用
1、 理解:类是对同一种事物的抽象,继承中父类则是对同一批事物的抽象
2、 继承:extends 单继承 延续和扩展父类的一切信息(包括私有信息)
(1)、延续:父类存在,子类没有重写但可以使用;
(2)、新增:父类没有,子类新增加的
(3)、重写:父类子类都存在,但是弗雷德不满足要,子类对其进行从新定义;
3、 实例化:
(1)、先父类后子类,先静态后成员;
实例化的时候先调用父类的静态构造快,在调用父类的构造方法,然后子类的构造块,在调用子类的构造方法;
(2)、默认调用父类空构造;
4、重写 override
(1)、重写与重载:
重写:继承的子类中,方法签名相同( 方法名+形参个数 类型 顺序 )
重载:同一个类 方法名相同 ,形参个数 类型 顺序 不同
(2)、重写规则:在子类中签名与父类中相同,在合理范围内提高子类可见性;
A、返回类型:基本类型和void必须相同;引用类型要<=父类的返回类
B、异常:
C、可见性:要大于或等于父类中被重写的方法
2、 多态:模糊策略(以不变应万变)
1)、多态 : 继承 +重写 + 父类型引用 指向 子类对象
2)、编译看类型 运行找对象
编译确定方法表 +就近最优
运行在方法表的基础上 调用方法
发生多态对新增方法不可见
3、应用
1)、形参使用父类型
2)、返回类型使用父类型
4、使用新增方法 必须 强制类型转换 +instanceof
5、口诀 -->编译期or运行期
父类是父类,子类是子类,子类是父类,父类不是子类,子类不是其他子类
6、类型转换
1)、自动转换:类型提升
大类型 =小值
2)、强制转换:() instanceof 发生多态
小类型 = (小类型)大值;