Java 中的继承是一种重要的面向对象编程的概念,它描述了父类和子类之间的关系。继承可以让子类复用父类的代码,同时也可以通过子类来扩展和改进父类的功能。以下是关于 Java 继承的一些重要知识点:
- 定义子类:Java 中可以使用
extends
关键字扩展一个已有的类,从而定义一个子类。例如,下面这个 Student 类继承了 Person 类:
public class Student extends Person {
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
2. 继承父类的成员变量和方法:子类继承了父类的所有非 private 成员变量和方法,子类可以直接访问这些成员变量和方法,也可以定义和父类同名的成员变量和方法来隐藏父类的同名成员变量和方法。
例如,在上面的例子中,Student 类继承了 Person 类中的 name 和 age 成员变量,以及 getName() 和 getAge() 方法,同时还新增了一个 school 成员变量和对应的 getter 和 setter 方法。
- 方法覆盖(Override):子类可以重写(覆盖)父类的方法,以实现自己特有的功能需求。覆盖的方法必须具有相同的方法签名(方法名称、参数列表和返回值类型),可以使用
@Override
注解来标记子类中被覆盖的方法。
例如,下面这个 Student 类重写了 Person 类中的 getHello() 方法:
public class Student extends Person {
// 省略成员变量和构造方法
@Override
public String getHello() {
return "Hello, I am a student!";
}
}
4. super 关键字:子类可以使用 super
关键字调用父类的构造方法或成员变量和方法。例如,在上面的例子中,Student 类的构造方法中可以使用 super 关键字来调用父类的构造方法,以初始化父类的成员变量:
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
// 省略 getter 和 setter 方法
}
总之,Java 中的继承是一种重要的面向对象编程概念,可以用来复用已有的代码,同时也可以用来实现多态等高级功能。子类可以继承父类的非 private 成员变量和方法,其中方法还可以被子类重写以实现新的功能需求。在子类中可以使用 super 关键字来调用父类的构造方法或成员变量和方法。要注意的是,尽管继承可以带来很多好处,但过度依赖继承有可能造成代码复杂度和可维护性等问题,因此需要根据具体业务需求来选择继承或其他方式实现代码重用。