类和类之间的关系

A is-a B 泛化(继承 实现)

A has - a B 包含(组合 聚合 关联)

A use-a B 依赖 (need-a)

继承 is-a

  1. 子类继承父类, 通过关键字: extends

    • 子类在被实例化时,父类也被间接的实例化(体现在父类的构造方法被执行了)
  2. 子类可以调用父类中的(public protected)属性和方法

  3. 子类可以拥有自己的属性和方法

  4. 子类可以重写父类的方法

    • 权限可以大于等于父类
    • 特征:

      • final: 子类不能重写
      • static: 子类不存在
      • abstract 子类必须重写 (子类是具体必须重写 否则子类是抽象类 可以不重写)
    • 返回值: 子类可以小于等于父类
    • 名称: 子类与父类一直
    • 参数: 子类与父类一致
    • 异常: 运行时、编译时

      • 父类方法抛出运行时异常, 子类可以不予理会
      • 父类方法抛出编译时异常:子类抛出异常个数小于等于父类、子类抛出异常的类型小于等于父类
  5. 每个类默认继承Object类

  6. Java中继承是单继承: 每一个只能有一个直接继承类(extends关键字后面只能写一个类)

    • 可以通过传递的方式实现多继承的效果 后续还会有多实现
  7. 继承在内存中的存储形式

  8. this(代替是当前调用方法属性时的那个对象 不一定是当前类的对象, 父类的this指向实例,方法重名时 在父类this调用方法时 也是通过继承链的起始点寻找该方法,通过 super.xxx() 可以调用父类方法 )
    this和super在构造方法中调用另一个类的构造方法不能同时出现在第一行
    构造方法之间不能来回互相调用(编译时异常)

Object 类中的方法
hashCode() 将对象在内存中的地址经过计算得到一个int整数
equals() 用来比较两个对象的内容 默认效果: ===
equals方法是Object继承过来的方法, 默认效果比较地址
toString()
getClass() 获取对象对应类的类映射(反射 )(类模版)
wait() 线程进入挂起等待状态 存在方法重载
notify() 线程唤醒
notifyAll() 唤醒所有
finalize() 权限修饰符是protected 在对象被GC回收的时候 默认调用执行的方法
close() 权限修饰符是protected 为了克隆对象
  1. public class Person extends Animal{
  2. }