类与类之间的关系-继承

类与类之间的关系

  • A is-a B 泛化 (继承 实现)
  • A has-a B 包含 (组合 聚合 关联)
  • A use-a B 依赖 (依赖)

类关系设计:高内聚 低耦合 :继承(实现)>组合>聚合>关联 > 依赖

继承

  • 1.子类继承父类,通过一个关键字 extends

  • 2.子类对象可以调用父类中的(public protected)属性和方法 当作自己的来使用

  • 3.子类可以添加自己独有的属性和方法

  • 4.子类从父类中继承过来的方法不能满足子类需要,可以在子类中的重写(覆盖 override)父类的方法 更多指的是内容

  • 5.每一个类都有继承类,如果不写extends关键字,默认继承Object,如果写了extends则继承后面的那个父类

    Object 类,是任何引用类型的父类(直接或间接的继承Object类),Object类没有父类。

  • 6.java中的继承是单个存在的(单继承)每个类只有一个继承类(在extends关键字后面只能写一个类)

    可以通过传递的方式实现多继承的效果 可以用实现

  • 8.关于this和super的使用

    • this 和 super 都是指代词 代替的是对象

      this 代替的是 当前执行方法的那个对象 不一定是当前类

      super 代替的是当前执行方法的对象的父类的对象 空间内部的那个

      都能调用一般属性和一般方法

    • 可以放在类成员的任意位置(属性 方法 构造 块)

      注意调用一般方法的时候可以来回互相调用(写法 编译好用)执行可能产生问题(StackOverflowError)

      可以调用构造方法(放在构造方法的第一行)

    • 调用构造方法时:this 和 super不能同时出现,因为都需要放在第一行

    • 构造方法之间来回不能互相调用(编译就不好用)

方法重载于方法重写的异同

比较 方法重写(OverRide) 方法重载(OverLoad)
产生两个继承关系的类 一个类中的一组方法 子类重写父类方法
权限 子类可以小于等于父类 没有要求
特征 final static abstract 父类的方法是final 子类不能重写 ,父类的方法是static 子类不存在 , 父类的方法是abstract 子类必须重写 没有要求
返回值 子类可以大于等于父类 没有要求
名字 必须与父类方法相同 必须相同
参数 必须相同 类型或个数或顺序必须不同
异常 异常 运行时 编译时 如果父类方法抛出运行时异常 子类可以不予理会;如果父类方法抛出编译时异常 子类抛出异常的个数少于等于父类,子类抛出异常的类型少于等于父类。
方法体 子类的方法内容与父类不一致 每个重载的方法执行过程不一致

你可能感兴趣的:(java)