封装
信息隐藏,将属性和方法隐藏在对象中,调用者不必关系方法的实现细节 本质:安全 解耦(数据耦合)
继承
基于已有的类创建新的类 本质:复用
多态
一个变量可以指向多种类型对象 在运行时才知道最终调用了哪种类型的方法
父类引用指向子类对象 具体表现为方法的重写和重载 重写:子类与父类的多态 方法名相同 参数类型相同 不能传递作用域小于父类的参数 也不能抛出更多的异常 可以用super调用父类的方法 重载:子类间的多态 方法名相同 参数类型不同 返回值不作为评判条件
子类构造器
当创建对象时 子类会先调用父类的无参构造方法 如果父类没有无参构造方法 那子类需要用super显示调用其他构造方法
防止多态
final :确保不会在子类中改变语意
final修饰的属性只会被赋值一次 方法不可重写
方法调用
- 调用方法A时编译器会找到类及其父类中方法名为A的方法
- 然后根据参数匹配调用哪个方法
- 但实际上JVM为每个类准备了一个方法表 记录了该类所以的方法签名 然后高效匹配
静态绑定 :private static final 构造方法 动态绑定:运行时才知道具体调用哪个类的方法的绑定
强制类型转化
- 强转的前提是继承关系
- instanceof 可以判断是否继承
抽象类
抽象类本质是对类的抽象 接口强调的是对类的规范 可以子类共有的属性和方法放在抽象类中 把多态的方法放在abstract方法中
修饰符
- public 外部可见
- protected 本包及子类 (没什么用)
- default 本包可见
- private 本类可见
Object
java中所有类的超类
public void recursiveLife(Person me) {me.learning();me.coding();me.doSport();recursiveLife(me);}
