向下转换时一定要进行instanceof判断!!!
class 1:Animal
package b;
public abstract class Animal {
public abstract void eat();
}
class 2: Cat
package b;
public class Cat extends Animal{
public void eat() {
System.out.println("吃鱼");
}
public void cat_power() {
System.out.println("抓老鼠");
}
}
class 3: Dog
package b;
public class Dog extends Animal {
public void eat() {
System.out.println("狗都可以吃");
}
public void dog_power() {
System.out.println("守家");
}
}
class 4:operate
package b;
public class Operate {
public static void main(String arg[]) {
need(new Dog());
System.out.println("--------------------");
need(new Cat());
}
public static void need(Animal animal) {
if(animal instanceof Dog) {
Dog dog= (Dog) animal;
dog.eat();
dog.dog_power();
}
if(animal instanceof Cat) {
Cat cat=(Cat) animal;
cat.eat();
cat.cat_power();
}
}
}
result:
狗都可以吃
守家
--------------------
吃鱼
抓老鼠