继承
mermaid这里不支持classDiagram,画了个简版的,得倒过来看。
Person是父类(基类)
Student 和 Teacher 是子类(派生类)
Teacher 单继承了 Person类
Student 单继承了 Person类
TeacherAssistant 多重继承 Student 和 Teacher类
判断是否为继承关系的方法: “子类”是“父类”,“父类”不能是“子类”。
如 teacher 是 person,student 是 person,但反之不成立。
多态
有了继承才有多态:
引用多态
Person P1 = new Person(); // 类的引用可以指向本类对象
Person P2 = new Student(); // 父类的引用可以指向子类对象。
Student S1 = new Student(); // 类的引用可以指向本类对象
// ❌ Student S2 = new Person(); // 错,子类不能引用父类对象
方法多态
// Person 有 info()
// Student 有 info()
// Teacher 没有info()
P1.info() // 调类Person的info(),本类对象调用访问本类的方法
P2.info() // 调类Student的info(),子类对象调用访问子类重写的方法
Person P3 = new Teacher()
P3.info() // 调类Person的info(),子类如果没有该方法,则继承父类的方法
抽象类
父类定义某个方法,但可以不用写具体实现,而是由子类来重写实现。
父类是抽象的一个方法,只做声明,不写具体内容,以约束子类。
public abstract class Person {
public abstract void info()
}