一、什么是继承?
继承(Inheritance)是面向对象编程的重要特性之一,允许一个类(子类)继承另一个类(父类或超类)的属性和方法,从而实现代码重用和功能扩展。
二、继承的基本语法
class 父类 {
// 父类属性和方法
}
class 子类 extends 父类 {
// 子类新增属性和方法
}
例如:
class Animal {
void eat() {
System.out.println("动物吃东西");
}
}
class Dog extends Animal {
void bark() {
System.out.println("狗叫");
}
}
三、继承的特点
- 子类继承父类的所有非私有(非private)成员(属性和方法)。
- 子类可以新增自己的成员,也可以重写(Override)父类的方法。
- Java 是单继承,一个类只能继承一个直接父类,但可以通过接口实现多继承的效果。
- 子类对象可以赋值给父类类型(多态)。
四、关键字说明
关键字 | 说明 |
---|---|
extends | 声明继承关系,子类继承父类 |
super | 访问父类的属性、方法或构造器 |
@Override | 标注方法是重写父类的方法 |
五、继承示例代码
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
void introduce() {
System.out.println("我是 " + name + ", 年龄 " + age);
}
}
class Student extends Person {
String school;
public Student(String name, int age, String school) {
super(name, age); // 调用父类构造器
this.school = school;
}
@Override
void introduce() {
super.introduce(); // 调用父类方法
System.out.println("我在 " + school + " 上学");
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student("小明", 18, "清华大学");
s.introduce();
}
}
输出:
我是 小明, 年龄 18
我在 清华大学 上学
六、继承的注意事项
- 构造方法不被继承,但子类构造方法中可以使用
super()
调用父类构造方法。 - private 成员不能被继承,但可通过公有方法访问。
- final 类 不能被继承;final 方法 不能被重写。
- 继承层次不宜过深,避免过度复杂。
- 多态依赖继承,但二者不是同一概念。
七、继承带来的好处
- 代码复用:公共代码写在父类,子类继承后无需重复编写。
- 结构清晰:体现“是一个”的关系,有利于代码设计和维护。
- 多态实现基础:通过继承和重写实现运行时多态。
如果你需要,我可以帮你写:
- Java 继承中的多态详解
- 抽象类和接口的继承区别
- Java 继承常见陷阱及最佳实践
随时告诉我!
发表回复