Java super的意思

在Java中,super是一個關鍵字,它用於引用當前對象的父類(超類)中的方法或屬性。通常,super用於在子類中調用父類中的方法或訪問父類中的屬性,或者在構造函式中調用父類的構造函式。

以下是super的一些常見用法:

  1. 調用父類構造函式: 在子類的構造函式中,可以通過super關鍵字調用父類的構造函式。如果子類的構造函式沒有顯式地調用父類構造函式,Java會默認添加一個對父類無參構造函式的調用。如果父類沒有無參構造函式,則子類的構造函式必須顯式地調用一個父類構造函式。

    class Parent {
        public Parent(String message) {
            System.out.println(message);
        }
    }
    
    class Child extends Parent {
        public Child() {
            super("Parent constructor called!"); // 調用父類的構造函式
        }
    }
  2. 訪問父類方法或屬性: 在子類中,如果需要訪問父類中的方法或屬性,可以使用super關鍵字來明確指定要訪問父類中的方法或屬性。

    class Parent {
        public void printMessage() {
            System.out.println("Parent's message");
        }
    }
    
    class Child extends Parent {
        public void printMessage() {
            super.printMessage(); // 調用父類的printMessage()方法
        }
    }
  3. 訪問父類中定義的變數: 如果子類中定義的變數與父類中的變數同名,可以通過super關鍵字來訪問父類中的變數。

    class Parent {
        String message = "Parent's message";
    }
    
    class Child extends Parent {
        String message = "Child's message";
        public void printMessage() {
            System.out.println(super.message); // 訪問父類中的message變數
        }
    }

需要注意的是,super關鍵字只能在子類中使用,並且只能在構造函式和成員方法中使用,不能在靜態方法、靜態塊或者匿名內部類中使用。此外,super關鍵字不能用來訪問父類中的私有變數或方法。