一、概念
在Java中,继承是面向对象编程的一个关键特性,它允许你创建一个新的类(称为子类或派生类),该类从现有的类(称为父类或基类)继承属性和行为。通过继承,子类可以复用父类的代码,同时还可以扩展或覆盖父类的功能。
二、继承格式
使用 extends 关键字,实现类与类之间的继承关系。
public class 子类 extends 父类 {
// 子类的代码
}
三、访问父类构造器
子类可以通过使用 super
关键字来调用父类的构造器:
// 父类
class SuperClass {
private String name;
public SuperClass(String name) {
this.name = name;
System.out.println("父类有参构造执行了,name:" + name);
}
}
// 子类
public class Test extends SuperClass {
public Test(String name) {
super(name);
System.out.println("子类有参构造执行了,name:" + name);
}
public static void main(String[] args) {
// 会去调用Test的有参构造方法
Test test = new Test("张三");
}
}
运行结果:
父类有参构造执行了,name:张三
子类有参构造执行了,name:张三
四、访问父类的方法
如果子类覆盖了一个方法,但仍希望调用父类的实现,可以使用 super
关键字:
// 父类
class SuperClass {
public void display() {
System.out.println("父类 display () 执行了。。。");
}
}
// 子类
public class Test extends SuperClass {
@Override
public void display() {
super.display(); // 调用父类的display方法
System.out.println("子类 display () 执行了。。。");
}
public static void main(String[] args) {
Test test = new Test();
test.display();
}
}
运行结果:
父类 display () 执行了。。。
子类 display () 执行了。。。
五、结语
在Java中,类的继承是单继承的,也就是说一个类只能直接继承自一个父类。但是,通过实现接口(interface),一个类可以实现多个接口,从而达到类似多重继承的效果。
注意事项
- 如果父类的构造器是私有的(private),则无法从子类中调用,因此子类也无法继承私有构造器的父类。
- 子类不能访问父类的私有成员(变量或方法)。
- 子类可以访问父类的受保护(protected)、默认(package-private)和公共(public)成员。
通过继承,你可以构建层次化的类结构,这有助于组织代码,避免重复代码,以及创建更复杂和可维护的系统架构。