Java是一種具有強引用特性的面向對象編程語言。當我們在Java中定義一個變量時,實際上創建了一個“引用”,而不是一個對象。引用指向內存中實際存在的對象,可以理解為引用是對象的一種標識。
Java的多態性是指同一種類型的對象,使用不同的方法會導致不同的結果。Java支持兩種類型的多態性:編譯時多態性和運行時多態性。編譯時多態性通常稱為重載,即在同一類中使用同一方法名,實現不同的功能;運行時多態性通常稱為重寫,即子類繼承父類的方法,但重新定義該方法,以實現不同的功能。
public class Animal { public void eat() { System.out.println("Animal eats."); } } public class Cat extends Animal { public void eat() { System.out.println("Cat eats fish."); } } public class Dog extends Animal { public void eat() { System.out.println("Dog eats meat."); } } public class Test { public static void main(String[] args) { Animal animal1 = new Animal(); Animal animal2 = new Cat(); Animal animal3 = new Dog(); animal1.eat(); animal2.eat(); animal3.eat(); } }
在上面的示例中,Animal類是父類,Cat和Dog是子類。我們分別實例化了三個不同的對象:animal1是Animal類的對象,animal2是Cat類的對象,animal3是Dog類的對象。我們調用它們的eat()方法。因為animal1是Animal類的對象,所以它將調用Animal類中的eat()方法并輸出“Animal eats.”。animal2是Cat類的對象,所以它將調用Cat類中重寫的eat()方法并輸出“Cat eats fish.”。animal3是Dog類的對象,所以它將調用Dog類中重寫的eat()方法并輸出“Dog eats meat.”。這就是Java中的多態性,同樣的方法名,但是執行的結果不同。