代码分享:
import javax.xml.catalog.Catalog; public class DuotaiTest { public static void main(String[] args){ //func(new Animal()); //Error:(3, 9) java: 无法从静态上下文中引用非静态 方法 func(Animal) DuotaiTest t=new DuotaiTest(); t.func(new Animal()); System.out.println("------"); t.func(new Dog()); System.out.println("---------"); t.func(new Cat()); } public void func(Animal a){//Animal a=new Dog(); a.eat(); a.jump(); if(a instanceof Dog){ Dog d=(Dog) a; //((Dog) a).wang(); d.wang(); } if(a instanceof Cat){ Cat c=(Cat) a; c.catchMouse(); } if(a instanceof Animal){ System.out.println("大家都是动物"); } } public void show(){ func(new Animal()); } } class Animal{ String name; int age; public void eat(){ System.out.println("动物找吃的"); } public void jump(){ System.out.println("动物跳跳糖"); } } class Dog extends Animal{ public void eat(){ System.out.println("狗吃骨头"); } public void jump(){ System.out.println("狗急跳墙"); } public void wang(){ System.out.println("小狗汪汪叫"); } } class Cat extends Animal{ public void eat(){ System.out.println("猫吃鱼"); } public void jump(){ System.out.println("小猫爬墙"); } public void catchMouse(){ System.out.println("小猫喵喵叫"); } }
结果:
动物找吃的
动物跳跳糖
大家都是动物
------
狗吃骨头
狗急跳墙
小狗汪汪叫
大家都是动物
---------
猫吃鱼
小猫爬墙
小猫喵喵叫
大家都是动物