继承
关于java语言当中的继承:
-
1 继承是面向的对象三大特征之一,三大特征是封装、继承、多态。
-
2 继承“基本”的作用是:代码复用。但是继承最“重要”的作用是:有了继承才有了以后的“方法覆盖”和“多态机制”
-
3 继承语法格式:
[修饰符列表] class 类名 extends 父类名{
类体 = 属性 + 方法
}
-
4 java语言当中的继承只支持单继承,一个类不同同时继承很多类,只能继承一个类。【在C++中支持多继承】。
-
5 关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、超类、superclass
B类称为:子类、派生类、subclass -
6 在Java语言当中子类继承父类都继承那些数据?
私有的不支持继承
构造方法不支持继承
其他数据都可以被继承 -
7 虽然java语言当中只支持单继承,但是一个类也可以间接继承其他类,例如:
C extends B{
}
B extends A{
}
A extends T{
}
C类直接继承B类,但是C类间接继承T、A类。
- 8 java语言中假设一个类没有显示的继承任何类,该类默认继承JavaSE库中提供的java.lang.Object类。java语言中任何一个类中都有Object类的特征。
方法覆盖
1 方法覆盖又称方法重写(override[官方]、overwrite)
2 什么时候使用方法覆盖?
当父类中的方法已经无法满足当前子类的业务需求,子类有必要将父类中继承过来的方法进行重新编写,这个编写过程称为方法重写/方法覆盖。
3 什么条件满足之后会发生重写呢?
代码满足什么条件之后,就构成方法的覆盖呢?
- 方法重写发生在具有继承关系的父子类之间
- 返回值类型相同,方法名相同,形参列表相同
- 访问权限不能更低,可以更高。
- 抛出异常不能更多,可以更少
建议方法重写的时候尽量复制粘贴,容易导致没有产生覆盖。
注意
- 私有方法不能继承,所以不能覆盖
- 构造方法不能继承,所以不能覆盖
- 静态方法不存在覆盖
- 覆盖只针对方法,不谈属性