有人可以解釋實例和方法隱藏的原因和好處,特別是我會獲得重複超類成員的優勢嗎?這不是爲了進一步確定一個階級並改進階級而繼承的遺產嗎?實例和方法隱藏:重點是?
0
A
回答
1
我強烈反對。由於元素只有在靜態時才能被隱藏起來,如果你正在使用通過聲明類而不是其子類或實例來調用靜態元素的好習慣,那麼它就沒有什麼區別。
public class Animal {
public static void testClassMethod() {
System.out.println("The static method in Animal");
}
public void testInstanceMethod() {
System.out.println("The instance method in Animal");
}
}
public class Cat extends Animal {
public static void testClassMethod() {
System.out.println("The static method in Cat");
}
public void testInstanceMethod() {
System.out.println("The instance method in Cat");
}
public static void main(String[] args) {
Cat myCat = new Cat();
Animal myAnimal = myCat;
Animal.testClassMethod();
myAnimal.testInstanceMethod();
}
}
將輸出
The static method in Animal
The instance method in Cat
採取正如你可以看到,即使是使用相同的名稱實現的另一個靜態方法的例子,在動物中聲明的一個WASN」除非你打電話給Cat.testClassMethod();
並期望得到相同的結果
它在這裏抽象繼承的想法,因爲靜態元素並沒有真正繼承,只是acessible子類的只是一個問題。
1
在通過繼承相關的類中定義具有相同簽名的靜態方法時,會發生Java方法隱藏。它確實發生在實例方法而不是,這會在這種情況下產生覆蓋。
分配兩種可能的語義它的一個必要的Java語言的設計者 - 的選擇是隱藏或覆蓋的靜態方法。
我想,爲什麼他們有藏身去了的原因是,這是很容易理解和執行。它還具有提高性能的巨大潛力,因爲可以在編譯時分派靜態方法。
總體而言,這不是一個大問題,因爲你有機會獲得隱藏的方法爲好,只要你指定被定義隱藏的靜態方法的類名。
+0
因此,它適用於靜態方法的事實並不影響繼承。 –
相關問題
- 1. Java實例方法:不只是重寫,但也隱藏
- 2. 方法重載和方法隱藏
- 3. 網點和實例方法
- 4. 爲什麼我的Static方法隱藏我的實例方法?
- 5. 覆蓋和隱藏方法
- 6. 抽象方法和隱藏方法
- 7. 瞭解C#中的虛方法,方法隱藏和重寫#
- 8. 隱藏的IE實例
- 9. 方法隱藏
- 10. 在Qt中隱藏和重新啓動QApplication的相同實例
- 11. 隱藏數組實例的額外方法
- 12. before_filter方法中隱藏的實例變量
- 13. 重置節點順序和隱藏event.srcElement
- 14. 隱藏在c#中的方法的優點和缺點?
- 15. C#重寫實例方法
- 16. C#隱藏方法實現代碼
- 17. 接口實現隱藏方法
- 18. Python'隱藏'方法__
- 19. C#方法隱藏
- 20. 如何設置2格重疊和隱藏對方點擊
- 21. 隱式模板方法實例
- 22. 從Ruby方法顯式返回 - 實現隱藏,重用和優化
- 23. NSApp隱藏了什麼:實際上是否使用NSWindow實例?
- 24. 方法隱藏的用途是什麼?
- 25. 「」隱藏實例和不完整實現的本地聲明
- 26. 類和實例方法與
- 27. 類方法和實例
- 28. 類方法和實例方法
- 29. 靜態方法和實例方法C#
- 30. java中的隱藏方法和類(Robotium)
不要忘記它的名字。它不一定是相同的類型。 –