Java面向?qū)ο缶幊蘳uper如何使用

小樊
84
2024-10-31 10:22:56
欄目: 編程語言

在Java中,super關(guān)鍵字用于引用父類(或基類)的一個(gè)對(duì)象。它主要用于以下幾種情況:

  1. 避免父類方法的隱藏(Override):當(dāng)子類重寫父類的方法時(shí),可以使用super關(guān)鍵字調(diào)用父類的同名方法。這樣可以確保父類的方法不會(huì)被子類完全隱藏。
class Animal {
    void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        super.makeSound(); // 調(diào)用父類的makeSound方法
        System.out.println("The dog barks");
    }
}
  1. 訪問父類的成員變量(Field):當(dāng)子類需要訪問父類的成員變量時(shí),可以使用super關(guān)鍵字。注意,子類不能直接訪問父類的私有變量(private),但可以通過公共的getter和setter方法來訪問。
class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class Employee extends Person {
    public void printName() {
        super.setName("John Doe"); // 設(shè)置父類的name變量
        System.out.println(super.getName()); // 訪問父類的name變量
    }
}
  1. 調(diào)用父類的構(gòu)造方法:當(dāng)創(chuàng)建子類對(duì)象時(shí),如果子類沒有顯式地定義構(gòu)造方法,那么將自動(dòng)調(diào)用父類的無參構(gòu)造方法。如果子類定義了構(gòu)造方法,但仍然需要調(diào)用父類的構(gòu)造方法,可以使用super關(guān)鍵字。
class Person {
    private String name;

    public Person() {
        this.name = "Unknown";
    }

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

class Employee extends Person {
    public Employee() {
        super("Employee"); // 調(diào)用父類的帶參構(gòu)造方法
    }
}

總之,super關(guān)鍵字在Java面向?qū)ο缶幊讨杏糜谝酶割惖膶?duì)象、方法和成員變量,以便在子類中實(shí)現(xiàn)多態(tài)性、避免父類方法的隱藏以及調(diào)用父類的構(gòu)造方法等操作。

0