Java 继承学习总结
本章学习目标
-
重点掌握继承的作用
-
掌握 extends 关键字的含义和用法
-
重点掌握方法重写
-
掌握 super 关键字的含义和用法
-
掌握 final 关键字的含义和用法
什么是继承
继承就是在面向对象编程中,通过扩展一个已有的类,并拥有该类的所有属性和方法,来创建一个新的类。
被继承的类叫基类或父类,继承的类叫子类或派生类。
注意:构造器不支持继承,必须为子类定义显示构造器或使用隐式默认构造器
类与类的关系
-
继承关系(is - a)
代表的是两个类是同一类型,有着部分相同的属性和方法,完全符合 is – a 关系
-
组合关系(has - a)
代表的是两个类是不同类型,有着一个类包含或拥有另一个类,完全符合 has – a 关系
extends 关键字
extends 关键字用于表示 Java 中两个类之间存在继承关系
代码格式
访问修饰符 class 子类名 extends 父类名 { … }
继承的优缺点
优点
-
提高代码的可复用性(减少创建类编写代码的工作量)
-
提高代码的可扩展性
缺点
-
打破代码的封装性(父类向子类暴露实现细节)
-
降低代码的灵活性(父类更改子类也同时更改)
单继承与多继承
Java 不支持多继承,即一个类有且仅有一个父类或基类
Object 类
Object 类是 Java 所有类的根类,一个类如果没有继承任何类则默认继承 Object类
Object 类的方法如下:
public final Class getClass(); public int hashCode(); public boolean equals(Object x); protected Object clone() throws CloneNotSupportedException; public String toString(); protected void finalize() throws Throwable; public final void wait() throws InterruptedException; public final void notify();
方法重写
方法重写就是子类可以重写从父类继承的方法,从而允许子类改变父类中方法的行为
方法重写规则
-
子类重写的方法签名必须和父类完全相同
重写方法的返回值类型、方法名和形式参数列表都要与父类完全一致
-
子类重写的方法权限访问修饰符必须不小于父类中的访问修饰符
权限访问修饰符访问权大小顺序为:public > protected > private
-
子类中重写的方法抛出异常不能比父类范围大
避免异常处理机制出现问题
方法重写与方法重载的区别
-
方法重写:子类中的方法与父类中的方法签名完全相同(方法名称、参数列表、返回值类型) - 两个类有继承关系
-
方法重载:一个类中的方法与另一个方法名相同但参数列表不同 - 一个类有相同方法名
super 关键字
this 关键字表示当前对象的引用,super 关键字表示父类对象的引用
super 使用方法
super.属性名;//子类调用父类对象属性 super.方法名;//子类调用父类对象方法 super(…); //子类调用父类构造器(第一行)
子类对象实例化流程
-
先实例化父类对象(调用父类构造器)
-
再实例化子类对象(调用子类构造器)
public class Car { public Car ( ) { System.out.println(“汽车构造器”); } } public class SportsCar extends Car { public SportsCar ( ) { super( ); //调用父类构造器 System.out.println(“跑车构造器”); } }
final 关键字
final 关键字表示最后的、不可更改,可用于修饰类、属性(或成员变量)、方法