Java 中的方法隱藏

Rupam Yadav 2023年10月12日
  1. Java 中方法隱藏概念的實現
  2. Java 中方法隱藏和過載的區別
Java 中的方法隱藏

在本文中,我們將研究 Java 中方法隱藏的概念。方法隱藏類似於過載,但是當對子類和父類中的靜態函式使用相同的方法簽名時,它就會發揮作用。

Java 中方法隱藏概念的實現

在下面的示例中,我們採用三個類,一個 ParentChild 類以及 JavaExample 類和 main() 方法。Child 類繼承 Parent 類。ParentChild 類都有兩種方法。

Parent 類中,我們有一個名為 methodST() 的方法,它是一個 static 函式並返回一個字串。Child 類也有一個 methodST() 具有相同的返回型別並且是靜態的;只有字串被改變。

由於這兩個方法都是靜態的,我們可以使用類的名稱來呼叫它,當我們從 Parent 類呼叫 methodST() 時,它的方法被呼叫,並且字串被列印出來。

但是當我們呼叫 Child 類的 methodST() 函式時,即使它繼承了 Parent 類,也會執行它的方法而不是 Parent 類。之所以稱為方法隱藏,是因為子隱藏了父方法。

假設我們建立了兩個物件,一個是 Parent 類,另一個是 Child 類。Parent 方法僅被呼叫,因為引用是針對 Parent 的,並且靜態方法附加到類的引用而不是它們的物件。

class Parent {
  public static String methodST() {
    return "methodST() of Parent class";
  }
}

class Child extends Parent {
  public static String methodST() {
    return "methodST() of Child class";
  }
}

public class JavaExample {
  public static void main(String[] args) {
    System.out.println("Parent.methodST(): " + Parent.methodST());
    System.out.println("Child.methodST(): " + Child.methodST());

    System.out.println();

    Parent parent = new Parent();
    Parent childParent = new Child();

    System.out.println("parent.methodST(): " + parent.methodST());
    System.out.println("childParent.methodST(): " + childParent.methodST());
  }
}

輸出:

Parent.methodST(): methodST() of Parent class
Child.methodST(): methodST() of Child class

parent.methodST(): methodST() of Parent class
childParent.methodST(): methodST() of Parent class

Java 中方法隱藏和過載的區別

我們需要在父類和子類中都使用靜態方法來隱藏方法,同時過載使用非靜態方法。

在過載中,使用執行時物件呼叫方法,而編譯器使用方法隱藏中的類的引用呼叫靜態方法。

方法隱藏也稱為早期繫結,而過載稱為後期繫結。

作者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相關文章 - Java Method