abstract class Animal //定義了一個動物類,其方法有吃東西
{
abstract void eat();
}
class Dog extends Animal //定義了一個繼承於動物類的狗類,其方法有 吃東西 和 看家
{
void eat()
{
System.out.println("啃骨頭");
}
void lookHome()
{
System.out.println("看家");
}
}
class Cat extends Animal //定義了一個繼承於動物類的貓類,其方法有 吃東西 和 抓老鼠
{
void eat()
{
System.out.println("吃魚");
}
void catchMouse()
{
System.out.println("抓老鼠");
}
}
以上爲類定義。
要使用子類的特有方法,需要對定義的對象進行向下轉型
class Demo
{
//在method方法中執行對象通用的eat()方法,然後判斷對象具體類型,然後根據相應類型對對象進行向下轉型,然後執行對象的特殊方法。
static void method(Animal a)
{
a.eat();
// instanceof :用於判斷對象的具體類型,只能用於引用數據判斷,返回BOOL值
if(a instanceof Cat)//如果a的類型爲Cat,爲真,否則爲假
{
Cat c = (Cat)a;
c.catchMouse();
}
else if(a instanceof Dog)
{
Dog c = (Dog)a;
c.lookHome();
}
}
public static void main(String[] args)
{
Dog d = new Dog();
}
}