Java是一門面向?qū)ο蟮木幊陶Z言,在面向?qū)ο缶幊讨?,繼承是很重要的概念,而繼承中的覆蓋和隱藏是其中兩個非常重要的概念。
// 父類 Animal public class Animal { public void eat() { System.out.println("Animal eat"); } } // 子類 Cat public class Cat extends Animal { public void eat() { System.out.println("Cat eat"); } } // 測試類 Test public class Test { public static void main(String[] args) { Animal animal = new Animal(); animal.eat(); // 輸出 Animal eat Cat cat = new Cat(); cat.eat(); // 輸出 Cat eat Animal animal2 = new Cat(); animal2.eat(); // 輸出 Cat eat } }
以上代碼演示了覆蓋和隱藏的區(qū)別。我們可以看到,覆蓋和隱藏的核心區(qū)別在于子類是否有重寫父類的方法。
在上面的例子中,子類 Cat 重寫了父類 Animal 的 eat() 方法,當我們在子類 Cat 中調(diào)用 eat() 方法時,會輸出 Cat eat,而父類的 eat() 方法會被隱藏。
而當我們使用父類類型的引用指向子類對象時,如上面代碼中的 animal2 變量,當我們調(diào)用它的 eat() 方法時,會輸出 Cat eat,這就是覆蓋的效果。即父類的方法被子類重寫時,在調(diào)用時以子類的方法為準。
總的來說,覆蓋和隱藏都是Java中常見的繼承特性,理解它們的區(qū)別是非常重要的,可以提高我們程序設計的水平。