继承
约 416 字大约 1 分钟
2024-08-10
继承是 java 面向对象编程技术的一块基石,因为它允许创建分等级层次的类
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
格式
class 父类 {
}
class 子类 extends 父类 {
}继承树
在 Java 中,没有明确写 extends 的类,编译器会自动加上 extends Object。所以,任何类,除了 Object,都会继承自某个类
Java 只允许一个 class 继承自一个类,因此,一个类有且仅有一个父类。只有 Object 特殊,它没有父类
protected
继承有个特点,就是子类无法访问父类的 private 字段或者 private 方法。
protected 关键字可以把字段和方法的访问权限控制在继承树内部,一个 protected 字段和方法可以被其子类,以及子类的子类所访问
super
super 关键字表示父类(超类)。子类引用父类的字段时,可以用 super.fieldName
向上转型
// Student 继承自 Person
Person p = new Student();向下转型
// Student 继承自 Person
Person p1 = new Student();
tudent s1 = (Student) p1;区分继承和组合
Person 和 Book 中都有 name 字段,那么 student 可不可以继承 Book 呢?
public class Person {
private String name;
private Integer age;
}
class Book {
private String name;
}在使用继承时,我们要注意逻辑一致性。Student 不应该从 Book 继承,而应该从 Person 继承
Student是Person的一种,是is关系Student和Book的关系是has关系