Java SE-继承

一、继承概述

继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。

继承格式

  • 格式:
    1
    public class 子类名 extends 父类名{}
  • 父类也被称为基类、超类
  • 子类也被称为派生类

继承演示

Fu.java
1
2
3
4
5
public class Fu {
public void fu_Method(){
System.out.println("fu_method被调用");
}
}
Zi.java
1
2
3
4
5
public class Zi extends Fu{
public void zi_method(){
System.out.println("zi_method被调用");
}
}
test.java
1
2
3
4
5
6
7
8
9
10
11
public class test {
public static void main(String[] args) {
Fu f=new Fu();
f.fu_Method();

Zi z=new Zi();
z.zi_method();

z.fu_Method();
}
}

子类继承了父类的所有内容,进而可以调用父类的方法。同时,子类还可以有自己的特有内容。

二、继承的好处与弊端

好处

  • 提高了代码的复用性
  • 提高了代码的维护性

弊端

  • 继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性。

什么时候使用继承

假设有A和B两个类,它们满足A是B的一种或B是A的一种,就说明它们存在继承关系,这时就可以使用继承来体现。

例如:猫和动物,苹果和水果

三、继承中变量的访问特点

  • 首先在子类局部范围找
  • 接着在子类成员范围找
  • 接着在父类成员范围找

四、关键字super

super关键字的用法和this关键字用法相似

  • this:代表本类对象的引用
  • super: 代表父类存储空间的标识(可理解为父类的对象引用)
关键字 访问成员变量 访问构造方法 访问成员方法
this this.成员变量 this(···) this.成员方法(···)
super super.成员变量 super(···) super.成员方法(···)

五、继承中构造方法的访问特点

子类中所有的构造方法默认都会访问父类中无参的构造方法

原因:

  • 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化
  • 每一个子类构造方法的第一条语句都是:super(),如果没有明确地调用父类的构造方法,编译器会帮我们自动加一句super();

其他

继承有个特点,就是子类无法访问父类的private字段或private方法。

protected字段和方法可以被其子类,以及子类的子类所访问。

java中的类只支持单继承,支持单层继承,不支持多继承。

练习

六、方法重写

概述

子类中出现了和父类中一模一样的方法声明

应用

  • 当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。

练习

请我喝杯咖啡吧~

支付宝
微信