多态中判断类型关键字 instanceof
/*
对象的多态性
动物
猫
狗
猫 x = new 猫();
x.吃饭();
狗 y = new 狗();
y.吃饭()
动物 d =new 猫();
d.吃饭();
*/
abstract class Animal
{
public abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("猫吃猫粮");
}
public void catchMouse()
{
System.out.println("猫在抓老鼠");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("狗吃骨头");
}
public void lookDoor()
{
System.out.println("狗在看门");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("猪吃饲料");
}
}
class Bird extends Animal
{
public void eat()
{
System.out.println("鸟最爱吃害虫");
}
}
class DuoTaiDemo1
{
public static void main(String[] args)
{
/*
Cat c = new Cat();
Cat c1 = new Cat();
function(c);
function(c1);
Dog d = new Dog();
d.eat();
Pig p =new Pig();
p.eat();
*/
function(new Cat());
function(new Dog());
/*function(new Pig());
function(new Bird());
*/
}
public static void function(Animal a)//Animal a = new Cat(); Animal a = new Dog();
{
if(a instanceof Cat)
{
Cat c =(Cat)a;
c.eat();
c.catchMouse();
}
else if(a instanceof Dog)
{
Dog d =(Dog)a;
d.eat();
d.lookDoor();
}
}
/*
public static void function(Cat c)
{
c.eat();
}
public static void function(Dog d)
{
d.eat();
}
public static void function(Pig p)
{
p.eat();
}
public static void function(Bird b)
{
b.eat();
}
*/
}