簡體   English   中英

需要幫助使用 super 關鍵字調用父類方法

[英]Need help using super keyword to invoke parent class method

class TextClass
{
     int temp;
     void sum(int x,int y)
     {
         temp = x+y;
         System.out.println("Sum of parent class sum method = " + temp);
     }

 }
 class MethodOverriding extends TextClass
 {
    int temp;
    void sum(int x,int y)
    {
        temp = x + y;
        System.out.println("Sum of base or chlid class method = " + temp);
    }
    super.sum(10,15);

    public static void main(String args[])
    {

        MethodOverriding mo = new MethodOverriding();
        mo.sum(2,4);
        System.out.println(mo.super.sum(3,5));
    }
}

我將如何在 main 方法中使用super關鍵字來調用父類sum方法?

你不能直接從 main 方法訪問它,因為 main 是靜態的,你的兩個類都應該是靜態的來調用超級。 否則就像在下面的例子中,你創建一個對象,構造函數/方法將相應地調用 super 。 這是不可能的,超級是非靜態變量

官方文檔 在這里

如果您的方法覆蓋了其超類的方法之一,則可以通過使用關鍵字 super 來調用被覆蓋的方法。 您還可以使用 super 來引用隱藏字段(盡管不鼓勵隱藏字段)。 考慮這個類,超類:

示例:超類

public class SuperClass {
    public void printHello() {
       System.out.println("Hello from SuperClass");
       return;
    }
 }

子類:

public class SubClass extends SuperClass {
    public void printHello() {

    super.printHello();
       System.out.println("Hello from SubClass");
       return;
    }
    public static main(String[] args) {
       SubClass obj = new SubClass();
       obj.printHello();
    }
 }

輸出:

Hello from SuperClass
Hello from SubClass

你不能從 Main 方法中做到這一點。

如果要使用 TextClass 類的 sum 方法,

你必須在 MethodOverriding 類中調用 super

但是如果你想同時使用這兩種方法,你可以在 MethodOverriding Class 中創建兩個不同的 sum 方法。 其中一個將調用 super.sum() 而另一個將覆蓋它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM