开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情
继承
为什么需要继承
看一个小问题:看一个程序com.gaogao.extend_包,Extend01.java提出代码复用的问题
package com.gaogao.extend_;
public class Extend01 {
public static void main(String[] args) {
Pupil pupil = new Pupil();
pupil.name = "小明";
pupil.age = 15;
pupil.testing();
pupil.setScore(60);
pupil.showInfo();
System.out.println("==============");
Graduate graduate = new Graduate();
graduate.name = "大壮";
graduate.age = 22;
graduate.testing();
graduate.setScore(100);
graduate.showInfo();
}
}
我们编写两个类,一个是Pupil类(小学生),一个是Graduate(研究生)
问题:两个类的属性和方法有很多是相同的,怎么办
可以看到,代码的复用性很差
解决方案:继承(提高代码复用性)
基本介绍
继承可以解决代码复用,让我们的编程更加靠近人类思维,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法。所有的子类不需要重新定义这些属性和方法,只需要通过extends来声明继承父类即可
示意图
此时的A类被称为父类,B类和C类称为子类,派生类,D类拥有本身的属性和方法,B类的属性和方法,A类的属性和方法
基本语法
class 子类 extends 父类{
}
- 子类就会自动拥有父类定义的属性和方法
- 父类又叫超类,基类
- 子类又叫派生类
我们把之前的代码改进一下放在com.gaogao.extend_.improve包中
package com.gaogao.extend_.improve;
import com.gaogao.extend_.Graduate;
public class Extend01 {
public static void main(String[] args) {
Pupil pupil = new Pupil();
pupil.name = "小刚";
pupil.age = 15;
pupil.testing();
pupil.setScore(60);
pupil.showInfo();
System.out.println("==============");
com.gaogao.extend_.Graduate graduate = new Graduate();
graduate.name = "小红";
graduate.age = 22;
graduate.testing();
graduate.setScore(100);
graduate.showInfo();
}
}
我们可以看到代码量少了很多
继承带来的便利
- 代码的复用性提高了
- 代码的扩展性和维护性提高了