溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中super關鍵字怎么用

發布時間:2022-02-28 10:05:50 來源:億速云 閱讀:146 作者:iii 欄目:開發技術

Java中super關鍵字怎么用

在Java編程語言中,super關鍵字是一個非常重要的概念,尤其在處理繼承關系時。super關鍵字主要用于調用父類的構造方法、訪問父類的成員變量和方法。本文將詳細介紹super關鍵字的用法,并通過示例代碼幫助讀者更好地理解其應用場景。

1. super關鍵字的基本概念

super關鍵字在Java中用于引用當前對象的父類。它主要有以下幾種用途:

  1. 調用父類的構造方法:在子類的構造方法中,可以使用super()來調用父類的構造方法。
  2. 訪問父類的成員變量:當子類和父類中有同名的成員變量時,可以使用super關鍵字來訪問父類的成員變量。
  3. 調用父類的方法:當子類重寫了父類的方法時,可以使用super關鍵字來調用父類的方法。

2. 調用父類的構造方法

在Java中,子類的構造方法默認會調用父類的無參構造方法。如果父類沒有無參構造方法,或者你想調用父類的有參構造方法,那么必須顯式地使用super關鍵字來調用父類的構造方法。

2.1 調用父類的無參構造方法

class Animal {
    Animal() {
        System.out.println("Animal constructor");
    }
}

class Dog extends Animal {
    Dog() {
        super(); // 調用父類的無參構造方法
        System.out.println("Dog constructor");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
    }
}

輸出結果:

Animal constructor
Dog constructor

在這個例子中,Dog類的構造方法中使用了super()來調用Animal類的無參構造方法。即使不顯式地寫super(),Java編譯器也會自動插入super()來調用父類的無參構造方法。

2.2 調用父類的有參構造方法

class Animal {
    String name;

    Animal(String name) {
        this.name = name;
        System.out.println("Animal constructor with name: " + name);
    }
}

class Dog extends Animal {
    Dog(String name) {
        super(name); // 調用父類的有參構造方法
        System.out.println("Dog constructor with name: " + name);
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy");
    }
}

輸出結果:

Animal constructor with name: Buddy
Dog constructor with name: Buddy

在這個例子中,Dog類的構造方法中使用了super(name)來調用Animal類的有參構造方法。由于父類沒有無參構造方法,因此必須顯式地調用父類的有參構造方法。

3. 訪問父類的成員變量

當子類和父類中有同名的成員變量時,可以使用super關鍵字來訪問父類的成員變量。

class Animal {
    String name = "Animal";
}

class Dog extends Animal {
    String name = "Dog";

    void printNames() {
        System.out.println("Dog name: " + name);
        System.out.println("Animal name: " + super.name);
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.printNames();
    }
}

輸出結果:

Dog name: Dog
Animal name: Animal

在這個例子中,Dog類和Animal類都有一個名為name的成員變量。在Dog類的printNames方法中,使用super.name來訪問父類的name變量。

4. 調用父類的方法

當子類重寫了父類的方法時,可以使用super關鍵字來調用父類的方法。

class Animal {
    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        super.makeSound(); // 調用父類的makeSound方法
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.makeSound();
    }
}

輸出結果:

Animal makes a sound
Dog barks

在這個例子中,Dog類重寫了Animal類的makeSound方法。在Dog類的makeSound方法中,使用super.makeSound()來調用父類的makeSound方法。

5. super關鍵字的注意事項

  1. super必須在構造方法的第一行:在子類的構造方法中,super()this()必須出現在第一行。如果兩者都不寫,編譯器會自動插入super()。

  2. super不能用于靜態上下文super關鍵字不能用于靜態方法或靜態代碼塊中,因為super是用于實例對象的。

  3. super不能用于訪問父類的私有成員super關鍵字不能用于訪問父類的私有成員變量或方法。

6. 綜合示例

下面是一個綜合示例,展示了super關鍵字在構造方法、成員變量和方法中的使用。

class Animal {
    String name;

    Animal(String name) {
        this.name = name;
        System.out.println("Animal constructor with name: " + name);
    }

    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    String name;

    Dog(String name) {
        super(name); // 調用父類的有參構造方法
        this.name = "Dog: " + name;
        System.out.println("Dog constructor with name: " + this.name);
    }

    @Override
    void makeSound() {
        super.makeSound(); // 調用父類的makeSound方法
        System.out.println("Dog barks");
    }

    void printNames() {
        System.out.println("Dog name: " + name);
        System.out.println("Animal name: " + super.name);
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy");
        dog.printNames();
        dog.makeSound();
    }
}

輸出結果:

Animal constructor with name: Buddy
Dog constructor with name: Dog: Buddy
Dog name: Dog: Buddy
Animal name: Buddy
Animal makes a sound
Dog barks

在這個綜合示例中,Dog類繼承了Animal類,并使用了super關鍵字來調用父類的構造方法、訪問父類的成員變量和方法。

7. 總結

super關鍵字在Java中扮演著重要的角色,尤其是在處理繼承關系時。通過super關鍵字,子類可以調用父類的構造方法、訪問父類的成員變量和方法。理解并正確使用super關鍵字,有助于編寫出更加清晰、可維護的代碼。

希望本文能夠幫助讀者更好地理解super關鍵字的用法,并在實際編程中靈活運用。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女