2014-10-18 20 views
0

作爲福利局(編輯:寫小白代替),因爲我可以,官方的Java教程,在http://docs.oracle.com/javase/tutorial/java/IandI/override.html最底部,指出靜態方法HIDDEN在重新實現它們的子類中,而實例方法顯然是OVERRIDEN。Java實例方法:不只是重寫,但也隱藏

但是在同一教程的http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html部分中,可以從重寫方法(可能還有其他方法)中調用超類的overriden方法。

請原諒我一些純粹的一些過剩,但從我只能得出結論,實例方法不僅OVERRIDEN,但也HIDDEN。

想法?

+4

這就是術語,你可以不同意這些名字,只要你明白其意思就行了。投票結束「基於意見」的問題 – alfasin 2014-10-18 23:33:26

+2

您的問題是什麼?你問我們你的推理是否正確?你的結論是否屬實?或者隱藏或覆蓋究竟是什麼意思? – meriton 2014-10-18 23:34:58

+0

http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.8.1 – 2014-10-18 23:39:47

回答

0

我假設你正在尋找你的推理評價。多態性的定義是以前在超類中存在的子類中的功能變化。所以是的,它隱藏了它,因爲覆蓋子類的接口不再允許從類外部訪問超類方法,而是支持子類實現。

所以,我們已經有了一個超類:

public abstract class Person { 
    public void speak() { 
     System.out.println("Person is speaking!"); 
    } 
} 

而且我們創建的子類:

public class Male { 
    public void speak() { 
     System.out.println("I like beer and code."); 
    } 
} 

Male類隱藏Person實施speak方法。所以從這個意義上講,它是隱藏的。但是,可以從Male類中訪問超類方法。

public void speak() { 
    super.speak(); 
    System.out.println("I like beer and code."); 
} 
0

你的解釋是有道理的,但不要讓它迷惑你。重要的部分是覆蓋,這是你必須明白的。

我不會調用重寫的方法「隱藏」,因爲它仍然可用,但通過不同的實現。這是壓倒一切的感覺。

關於隱藏的靜態方法,只是忘了它。這樣做是允許的,但是它根本沒有購買任何東西。沒有人使用它,你也不應該。把它忘了吧。

相關問題