封装
指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
优点
- 良好的封装能够减少耦合,封装体真正"独立"。
- 类内部的结构可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节。
封装过程
- 属性私有化,private进行修饰。
- 设置操作属性的唯一方法途径,这种方法就成为封装类的一层安全过滤网!
继承
A is a B : A继承B
A has a B : B是A的一属性
只记这一点:
1. 只有私有修饰和构造方法不能继承(当然除过final!属性也被继承了)
2. static属于类成员,不存在继承(但是可以子类.父类的静态方法)当然子类可以遮蔽父类static字段或者方法
继承:
覆盖不涉及属性(右键source/Override):
多态
两种多态机制:覆盖、重载
案例解析
内存分析:
报错分析:
编译器只检查语法(很单纯 很执着)
a2是Animal类型 于是 编译器去方法区内存中的Animal.class中寻找chaseMouse()方法,没有找到 报错!
重要异常
类转换异常:java.lang.ClassCastException
instanceof运算符
注意:子类 instanceof 父类 ===> true
但 子类.getClass() == 父类.getClass() ==> false
接口其实也是个父类!也可以: 子类 instanceof 接口
instance: 实例
编程思想(重要)
多态理念:
实质是利用 多态的 “自动向上转型” 实现面向抽象编程:
public void feed(Pet pet = new Cat() ){ ......}
用来被继承的父类(抽象):