初见JAVA-面向对象-封装继承多态-初级进化09
封装
作用
- 提高程序安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 提高系统可维护性
怎么做
属性私有,get/set
继承
- 本质:对一批类的抽象,从而实现对现实世界更好的建模
- 用extends关键字,子类是父类的扩展
- java只有单继承,没有多继承,一个儿子只有一个爸爸
- 子类和父类的关系是子类is a 父类
this和super
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
- this:代表本身调用者这个对象;super:代表父类对象的引用
- this:没有继承也可以使用;super:只能在继承条件才可以shying
- this():本类的构造;super():父类的构造
方法的重写
重写都是方法的重写,和属性无关
父类的引用指向了子类
静态方法:方法调用只和左边,定义的数据类型有关
修饰符:范围可以扩大但不能缩小
抛出的异常,范围可以被缩小,但不能扩大
为什么要重写:父类的功能,子类不一定需要或者不一定满足
修饰符
public
protected
private
default
多态
动态变异:类型:可扩展
对象的实际类型是确定的,但指向对象的引用的类型有很多
注意事项
多态是方法的多态,属性没有多态
父类和子类,有联系,类型转换异常 ClassCastException
存在条件:继承关系,方法需要重写,父类引用指向子类对象
不支持多态:
staitic方法,属于类,不属于实例
final 常量
private方法
instanceof
A instanceof B:A是否属于B
强制转换
(强制转换成的类型)被转换的对象
子类对象可以声明为父类类型,父类对象不可以声明为子类类型
在子类对象声明为父类类型后,可以通过强制转型,转型回来。
因为在子类对象声明为父类类型后,其实对象的真实意义还是子类对象
static
静态变量:
再多线程时用,可以直接用类名用,不需要实例
静态方法:
可以直接用类名访问,不需要实例
静态代码块:
static{}
导入静态包