Animal animal = new Animal();
Animal animal2 = new Dog();
Dog animal3 = new Dog();
public class Animal {
int age;
String name;
public Animal() {
name = "Empty";
age = 0;
}
public Animal(int a, String n) {
name = n;
age = a;
}
public void move() {
System.out.println("Moved");
}
}
public class Dog extends Animal {
public Dog() {
this.name = "dog";
this.age = 0;
}
public Dog(int a, String n){
this.name = n;
this.age = a;
}
}
嗨,我正在學習Java
,我想了解它們之間的區別。我知道animal
是Animal類型,animal3
是Dog類型,但是animal2
是什麼類型?這裏究竟發生了什麼?謝謝。變量聲明
瞭解繼承 – Jens
而關於多態性。這是使用OOP的這個屬性的例子之一。 –
這個概念在java中稱爲Upcasting,因爲我們在這裏將它轉換爲超類型Animal,animal2仍然是一個引用Animal的狗對象。這是完全有效的,因爲如果你看到狗是一隻動物。 (小心,因爲它拋出'ClassCastException') –