如何在Java中使用super访问父类方法

super关键字用于访问父类成员,调用被重写的方法时使用super.方法名()可执行父类逻辑;子类构造器中通过super()调用父类构造器且必须位于首行;super不能在静态方法中使用,仅限直接父类访问。

在Java中,super关键字用于访问父类的成员,包括方法、构造器和属性。当你需要调用被子类重写(override)的父类方法时,就可以使用super来明确指定调用的是父类版本的方法。

基本语法:调用父类方法

使用 super.方法名() 的形式可以调用父类中定义的方法。

例如,父类有一个 display() 方法,子类重写了它,但你希望在子类中仍然执行父类的逻辑,就可以这样写:

class Parent {
    void display() {
        System.out.println("父类的 display 方法");
    }
}

class Child extends Parent {
    @Override
    void display() {
        super.display(); // 调用父类的 display 方法
        System.out.println("子类的额外逻辑");
    }
}

在这个例子中,调用 child.display() 会先输出父类的信息,再输出子类新增的内容。

在构造器中调用父类构造器

子类构造器可以通过 super() 调用父类的构造器,必须放在第一行。

如果父类有带参数的构造器,子类必须显式调用它,否则编译报错。

class Parent {
    String name;

    Parent(String name) {
        this.name = name;
    }
}

class Child extends Parent {
    Child(String name) {
        super(name); // 调用父类带参构造器
    }
}

访问被隐藏的父类方法(非重写情况)

即使没有重写,也可以用 super 调用父类方法,增强代码可读性或复用逻辑。

这种做法虽然不常见,但在需要明确表达“此处调用了父类行为”时很有用。

  • super 只能访问直接父类,不能跳级访问祖父类(除非逐层调用)
  • 不能在静态上下文中使用 super,比如 static 方法中
  • super() 只能在构造器中调用一次,且必须是首行

基本上就这些。只要记住 super 是通往父类的桥梁,尤其在重写方法后还想保留原有行为时特别有用。正确使用它能让继承关系更清晰,代码更可控。不复杂但容易忽略细节。