前言
提起面向对象,就不得不说面向对象的三大特征:封装性、继承性、多态性。今天,小编就带领大家学习Java中的继承。继承是多态的前提,如果没有继承,就没有多态。继承主要解决的问题是:共性抽取。继承最大的好处就是代码的复用。我们以员工类,讲师类和助教类来举例。员工类有姓名,年龄,工号,工作时间属性,有工作,获得薪酬的方法,讲师类和助教类也都有姓名,年龄和工号,工作时间四个属性,也都拥有获得报酬的方法,也都需要工作,但是工作的内容不同,讲师的工作是讲课,助教的工作是辅助讲师讲课(这其实就是方法的重写)。除此之外,讲师还有自己独特的方法,发表论文,助教也有自己独特的方法,维持教学秩序。在这个类图中,我们把员工类称为父类,把讲师类和助教类称为子类。子类既可以拥有父类的属性和方法,同时又拥有自己专有的内容。下面根据类图我们来进行一下继承的代码实现:
继承类图以及代码实现(extends关键字)
//定义一个父类:员工类
public class Employee {
//成员变量
private String name;
private int age;
private double workHour;
private String id;
//无参构造函数
public Employee() {
}
//全参构造函数
public Employee(String name, int age, double workHour, String id) {
this.name = name;
this.age = age;
this.workHour = workHour;
this.id = id;
}
//成员方法:工作方法
public void work(){
System.out.println("工作!");
}
//成员方法:获取报酬方法
public double getSalary(double workHour){
double salary=100* workHour;
return salary;
}
//Getter和Setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getWorkHour() {
return workHour;
}
public void setWorkHour(double workHour) {
this.workHour = workHour;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
//定义了员工的子类:讲师
public class Teacher extends Employee {
@Override
public void work() {
System.out.println("讲课");
}
public void publishPaper(){
System.out.println("讲师发表论文");
}
}
//定义父类的另一个子类:助教类
public class Assistant extends Employee{
@Override
public void work(){
System.out.println("辅助教学");
}
public void orderKeeper(){
System.out.println("助教帮助讲师维持课堂秩序");
}
}
总结
【1】继承中的两大概念:
①父类,也可以叫做基类,超类
②子类,也可以叫做派生类
【2】继承关系当中的特点:
1.子类可以拥有父类的"内容"
2.子类还可以拥有自己专有的内容
【3】继承关系:is-a
在继承类中,“子类就是一个父类”。也就是说,子类可以被当作父类看待。父类是员工,子类是讲师,那么“讲师就是一个员工”。关系:is - a。 A teacher is an employee.
【4】父类和子类的格式
①定义父类的格式:
public class 父类名称{
//...
}
②定义子类的格式:extends关键字(继承)
public class 子类名称 extends 父类名称{
//...
}
【5】类有五大结构:成员变量 成员方法 无参构造函数 有参(全参)构造函数 Getter和Setter方法
继承当中如何访问成员变量和成员方法?请见博客:https://blog.csdn.net/wtt15100/article/details/108117150