在Java编程中,super 关键字是一个非常重要的概念,它主要用于引用父类的属性和方法。通过使用 super,我们可以在子类中访问和使用父类的成员变量和方法,尤其是在子类中对这些成员进行重写(Overriding)的情况下,super 关键字显得尤为重要。

super 关键字的基本用法

  1. 访问父类的属性: 当子类中定义了与父类同名的属性时,子类的属性会隐藏父类的同名属性。这时,我们可以使用 super 来引用父类的属性。
class Parent {
    String name = "Parent Name";
}

class Child extends Parent {
    String name = "Child Name";

    void displayName() {
        System.out.println("子类名称: " + name); // 输出子类的名称
        System.out.println("父类名称: " + super.name); // 使用super访问父类的名称
    }
}

public class TestSuper {
    public static void main(String[] args) {
        Child child = new Child();
        child.displayName();
    }
}

输出:

子类名称: Child Name
父类名称: Parent Name

在上面的例子中,Child 类中定义了一个与 Parent 类同名的变量 name。通过 super.name,我们能够访问父类 Parentname 属性。

  1. 访问父类的方法: 当子类重写了父类的方法时,若希望在重写的方法中调用父类的版本,可以使用 super 关键字。
class Animal {
    void makeSound() {
        System.out.println("动物发出声音");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("狗叫");
    }

    void callSuperSound() {
        super.makeSound(); // 调用父类的makeSound方法
    }
}

public class TestSuperMethod {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.makeSound(); // 输出 狗叫
        dog.callSuperSound(); // 输出 动物发出声音
    }
}

在这个例子中,Dog 类重写了 makeSound 方法,但我们通过 super.makeSound()callSuperSound 方法中调用了父类 AnimalmakeSound 方法。

  1. 调用父类的构造方法: 在子类的构造方法中,可以使用 super() 来调用父类的构造方法。这个调用必须是构造方法中的第一条语句。
class Person {
    String name;

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

class Student extends Person {
    int studentId;

    Student(String name, int studentId) {
        super(name); // 调用父类的构造方法
        this.studentId = studentId;
    }

    void display() {
        System.out.println("姓名: " + name + ", 学生ID: " + studentId);
    }
}

public class TestSuperConstructor {
    public static void main(String[] args) {
        Student student = new Student("张三", 1001);
        student.display(); // 输出 姓名: 张三, 学生ID: 1001
    }
}

在上述代码中,Student 类的构造方法通过 super(name) 调用了父类 Person 的构造方法,从而正确初始化了 name 属性。

总结

super 关键字在Java中主要用于访问父类的字段和方法,确保在子类有与父类同名的成员时候,能够正确引用到父类的成员。此外,它还可以用于调用父类的构造方法。通过合理使用 super 关键字,可以灵活地实现面向对象编程中的继承关系,增强代码的可读性和可维护性。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部