Java 中的方法隱藏
在本文中,我們將研究 Java 中方法隱藏的概念。方法隱藏類似於過載,但是當對子類和父類中的靜態函式使用相同的方法簽名時,它就會發揮作用。
Java 中方法隱藏概念的實現
在下面的示例中,我們採用三個類,一個 Parent
和 Child
類以及 JavaExample
類和 main()
方法。Child
類繼承 Parent
類。Parent
和 Child
類都有兩種方法。
在 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn