继承的概述
- 什么继承
1)使用关键字extends,让一个类和另一个类建立父子关系
2)继承类被称为子类或派生类,被继承类叫做父类或基类、超类
3)子类继承父类后,就具有父类公共的成员变量和行为
public class ExtendsDemo5 {
public static void main(String[] args) {
Student s = new Student();
s.run(); // 返回 父类的run方法
}
}
/**
* 父类
*/
class People {
public void run() {
System.out.println("父类的run方法");
}
}
/**
* 子类
*/
class Student extends People {
}
- 继承的好处
1)提高代码的复用性
2)增强类的功能性
- 继承的设计规范
1)子类具有相同特性的功能房子父类中
2)子类独有的成员变量和行为放在子类中
继承的特点
- 子类可以继承父类的成员变量和行为,但不能继承父类的构造器
1)子类不可以继承父类的构造器
2)子类不可以继承父类的私有成员变量和行为(内存中是继承了关系只是不能访问)
3)子类可以直接使用父类的静态成员变量和方法(共享)
- java是单继承模式,一个类只能直接继承一个父类
- java不支持多继承,但支持多层继承
- java中所有类都是Object类的子类
1)默认继承Object类
2)要么直接继承,要么间接继承
继承后访问特点
- 就近原则
- 如果子类一定要访问父类成员变量和方法,使用关键字super
继承后方法重写
- 子类出现和父类一模一样的方法声明,这子类方法就是方法重写
- 私有方法不能被重写
- 重写方法的权限要和父类一样或大
@Override注解
- Override注解是放在重写的方法上,作为重写是否正确的校验
class Demo1 {
public void run() {
System.out.println("demo1");
}
}
class Demo2 extends Demo1 {
@Override
public void run() {
System.out.println("demo2");
}
}
继承后构造器特点
- 子类的全部构造器都先访问父类的无参数构造器
- 原因:子类可能需要父类的数据,因此需要先初始化父类
- 实现:子类第一行默认有一个super()方法直接访问父类无参数构造器