java變數和方法的覆蓋和隱藏(翻譯自Java Tutorials)

來源:互聯網
上載者:User
隱藏變數

在一個類裡,如果一個變數的名字和父類的變數的名字一樣,即使他們的類型不一樣,那麼在子類中,父類的同名變數無法直接通過變數名訪問。
但是,父類的同名變數可以通過super訪問。一般來說,不推薦隱藏變數,這樣會讓代碼難以閱讀

 

覆蓋和隱藏方法 對象執行個體方法

在一個對象執行個體方法中,如果子類有一個方法,它的簽名(方法名字,方法的參數個數和類型)和傳回值都和父類一樣,那麼就是覆蓋父類的方法。
子類覆蓋的能力,允許一個類,繼承父類的行為,根據需要修改某些行為。覆蓋的方法,和父類對應的方法有一樣的名字,一樣的參數類型和個數,一樣的傳回型別。另一種覆蓋方法可以返回父類的方法的傳回型別的子類。這個稱之為covariant傳回型別。
當覆蓋一個方法,你要使用註解@Override,告訴編譯器你要覆蓋父類的方法。但是,如果該方法不存在父類中,那麼編譯器會報錯。

 

類方法

如果子類聲明了一個與父類相同簽名的類方法,子類隱藏了父類的方法。
隱藏和覆蓋的區別具有很大的意義。覆蓋方法的調用版本就是子類的方法。隱藏方法的調用版本,依賴於它是被父類調用,還是被子類調用。

下面有個例子,示範對象執行個體方法和類方法的區別,第一個類是Animal

public class Animal {    public static void testClassMethod() {        System.out.println("The class" + " method in Animal.");    }    public void testInstanceMethod() {        System.out.println("The instance " + " method in Animal.");    }}

 

第二個類是Cat,它是Animal的子類:

public class Cat extends Animal {    public static void testClassMethod() {        System.out.println("The class 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();    }}

 

Cat類覆蓋了Animal的執行個體方法,並隱藏了它的類方法。結果輸出如下:

The class method in Animal.The instance method in Cat.

和之前所說的一樣,由於是通過父類調用隱藏方法,所以隱藏方法的調用版本是父類。而覆蓋方法的調用版本是子類的方法。

 

修飾符

覆蓋的存取修飾詞可以允許擴大,但不允許縮小。例如,一個protected對象方法,可以在子類中修改為public,但不能是private。否則代碼會在編譯時間出錯。

 

方法覆蓋和隱藏小結

下面的表格總結了在子類聲明了一個與父類簽名一樣的方法的各種情況

  Superclass Instance Method Superclass Static Method
Subclass Instance Method Overrides Generates a compile-time error
Subclass Static Method Generates a compile-time error Hides

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.