封装

信息隐藏,将属性和方法隐藏在对象中,调用者不必关系方法的实现细节 本质:安全 解耦(数据耦合)

继承

基于已有的类创建新的类 本质:复用

多态

一个变量可以指向多种类型对象 在运行时才知道最终调用了哪种类型的方法

父类引用指向子类对象 具体表现为方法的重写和重载 重写:子类与父类的多态 方法名相同 参数类型相同 不能传递作用域小于父类的参数 也不能抛出更多的异常 可以用super调用父类的方法 重载:子类间的多态 方法名相同 参数类型不同 返回值不作为评判条件


子类构造器

当创建对象时 子类会先调用父类的无参构造方法 如果父类没有无参构造方法 那子类需要用super显示调用其他构造方法


防止多态

final :确保不会在子类中改变语意

final修饰的属性只会被赋值一次 方法不可重写


方法调用

  1. 调用方法A时编译器会找到类及其父类中方法名为A的方法
  2. 然后根据参数匹配调用哪个方法
  3. 但实际上JVM为每个类准备了一个方法表 记录了该类所以的方法签名 然后高效匹配

    静态绑定 :private static final 构造方法 动态绑定:运行时才知道具体调用哪个类的方法的绑定


强制类型转化

  • 强转的前提是继承关系
  • instanceof 可以判断是否继承

抽象类

抽象类本质是对类的抽象 接口强调的是对类的规范 可以子类共有的属性和方法放在抽象类中 把多态的方法放在abstract方法中


修饰符

  • public 外部可见
  • protected 本包及子类 (没什么用)
  • default 本包可见
  • private 本类可见

Object

java中所有类的超类


  1. public void recursiveLife(Person me) {
  2. me.learning();
  3. me.coding();
  4. me.doSport();
  5. recursiveLife(me);
  6. }