java--多态性使用练习1

1、多态性的应用举例

package test2;

public class TestAnimal {

	public static void main(String[] args) {
		TestAnimal t = new TestAnimal();
		t.func(new Animal());
		t.func(new Dog());
		t.func(new Cat());
		
	}
	public void func(Animal a) {
		a.eat();
		a.jump();
		
		if(a instanceof Dog) {
			Dog d = (Dog)a;
			d.Wang();
		}
		if(a instanceof Cat) {
			Cat c = (Cat)a;
			c.catchMouse();
		}
	}

}
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("猫抓老鼠");
	}
}

打印结果

java--多态性使用练习1_第1张图片

 

2、建立TestInstance类。在类中定义方法method1(Person p);根据p的类型调用相应的getInfo()方法;

根据p的类型执行:如果p为Person类的对象,输出''a person''

如果p为Student类的对象,输出为''a student''  ''a person''

如果p为Graduate类的对象,输出为''a graduate student''   ''a student''   ''a person''

package test2;

public class TestInstance {

	public static void main(String[] args) {
		TestInstance t = new TestInstance();
		t.method1(new Student());
		System.out.println();
		t.method1(new Graduate());
	}
	public void method1(Person p) {
		System.out.println(p.getInfo());
		if(p instanceof Graduate) {
			System.out.println("a graduated student");
		}
		if(p instanceof Student) {
			System.out.println("a student");
		}
		if(p instanceof Person) {
			System.out.println("a person");
		}
	}

}
class Person{
	protected String name = "Person";
	protected int age = 50;
	protected String getInfo() {
		return "Name:"+name+"\n"+"age:"+age;
	}
}
class Student extends Person{
	protected String school = "pku";
	public String getInfo() {
		return "Name:"+name+"\nage:"+age+"\nschool:"+school;
	}
}
class Graduate extends Student{
	public String major = "IT";
	public String getInfo() {
		return "Name:"+name+"\nage:"+age+"\nschool:"+school+"\nmajor:"+major;
	}
}

打印结果

java--多态性使用练习1_第2张图片

你可能感兴趣的:(java--多态性使用练习1)