继承
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
关系