Java貓和狗案例是一個經典的示例,它展示了如何使用向下轉型將一個對象轉換成子類對象。
//抽象類 Animal public abstract class Animal { protected String name; public Animal(String name) { this.name = name; } public abstract void eat(); } //子類 Cat public class Cat extends Animal { public Cat(String name) { super(name); } @Override public void eat() { System.out.println(name + "正在吃魚"); } public void play() { System.out.println(name + "正在玩球"); } } //子類 Dog public class Dog extends Animal { public Dog(String name) { super(name); } @Override public void eat() { System.out.println(name + "正在吃骨頭"); } public void swim() { System.out.println(name + "正在游泳"); } }
我們來看一個使用向下轉型的例子:
Animal animal = new Cat("咪咪"); //創建一個Cat對象 if(animal instanceof Cat){ //向下轉型,將Animal對象轉換成Cat對象 Cat c = (Cat)animal; c.eat(); //調用Cat類的方法eat() c.play(); //調用Cat類特有的方法play() }
上述代碼中,我們首先創建了一個Cat對象,并將其賦值給Animal類型的變量animal。然后我們使用instanceof操作符判斷animal是否為Cat類型的對象。如果是,我們就可以使用向下轉型的方式將animal轉換成Cat類型的對象,并調用Cat類的方法eat()和特有的方法play(),達到了將一個父類對象轉換成子類對象的目的。