1.继承
①继承基本的作用:代码复用
②最重要的作用是:有了继承才有了以后“方法的覆盖”和“多态机制”
③语法格式:
[修饰符列表] class 类名 extends 父类名{
类体 = 属性 + 方法;
}
**④java语言中继承只支持单继承,**一个类不能同时继承很多类;在c++中支持多继承
⑤关于继承中的术语:
B类继承A类,其中:
A类称为:父类,基类,超类,superclass
B类称为:子类,派生类,subclass
⑥在JAVA语言中子类继承父类都继承哪些数据?
私有的不支持继承;构造方法不支持继承;其他数据都可以被继承
⑦虽然java中只支持单继承,但一个类中可以间接集成其它类,如:
C extends B{
}
B extends A{
}
A extends T{
}
C直接继承B类,但C类间接继承T、A类
⑧java语言中假设一个类没有显示的继承任何类,该类默认继承javaSE库中提供的java.lang.Object类,java语言中任何一个类中都有Object类的特征
例:
package com.day03jicheng.test06;
public class ExtendsTest02 {
public static void main(String[] args) {
C c = new C();
c.doSome();
}
}
class A{
public void doSome() {
System.out.println("do some");
}
}
class B extends A{
}
class C extends B{
}
2.方法覆盖/重写(override[官方]/overwrite)
①什么时候用方法重写?
当父类中的方法已无法满足当前子类的业务需求时,子类有必要将父类中继承过来的方法进行重新编写,这个重新编写的过程称为方法重写/方法覆盖
②什么条件满足后方法会发生重写?
方法重写发生在具有继承关系的父子类之间;方法名相同,返回值类型相同;形参列表相同【建议方法重写时,尽量复制粘贴】;访问权限不能更低,可以更高;抛出异常不能更多,可以更少
③注意:
私有方法不能继承,所以不能覆盖;
构造方法不能继承,所以不能覆盖;
静态方法不存在覆盖
覆盖只针对方法,不谈属性
3.多态
①语法机制:
Cat继承Animal
Bird继承A