[英]Static methods inheritance and polymorphism
繼承和多態如何與靜態方法一起工作? 有人可以解釋這里應該有什么適當的輸出以及它是如何得出的嗎?
class A { public static int get() { return 17; } }
class B extends A { public static int get() { return 42; } }
Main
A x = new B();
x.get();
錯誤消息,
類型A的靜態方法get()應該以靜態方式訪問
我想我知道如何以靜態方式訪問它,但這是來自類的一個問題,其隱含着將返回一個或另一個值
在我們的程序中,我們具有類定義:
class A { public static int get() { return 17; } }
class B extends A { public static int get() { return 42; } }
在其他地方,我們聲明A x = new B();
調用x.get()
返回什么數字?
調用將返回int
值17
。
static
方法不會被繼承。
static
方法根據調用它們的表達式的類型進行綁定和調用。
所以
x.get();
其中x
為A
類型調用A
的實現。 還要注意, static
方法不需要調用實例。
這些也將起作用。
((A) null).get();
A.get();
...
public static A someMethod() {}
...
someMethod().get();
您收到的消息是警告,而不是錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.