/**
*
* @author AdMin
*
*父类
*多态入门
*/
public class pet {
public void eat(){
System.out.println("正在吃");
}
}
/**
* @author AdMin
*
*子类
*/
public class penguin extends pet{
public void eat(){
System.out.println("企鹅吃鱼");
}
public void Youyong(){
System.out.println("企鹅游泳");
}
}
/**
* @author AdMin
*子类
*
*/
public class Cat extends pet {
public void eat(){
System.out.println("猫吃鱼");
}
public void boll(){
System.out.println("猫玩球");
}
}
public class Dog extends pet{
public void eat(){
System.out.println("狗吃狗粮");
}
public void Feipan(){
System.out.println("狗玩飞盘");
}
}
/**
*
* @author AdMin
*
*主人类
*/
public class mastr extends pet {
public void feed(pet Pet){
Pet.eat();
}
// 领养宠物 多态 形式三(父类方法返回值 子类实例化)
public pet getpet(int choose){
pet Pet =null;
if (choose==1) {
Pet =new Dog();
}else if(choose==2) {
Pet =new penguin();
}else if(choose==3){
Pet =new Cat();
}
return Pet;
}
//调用主人和宠物玩耍
public void Play(pet Pet){
if (Pet instanceof Dog) {
Dog dog = (Dog)Pet;//向下转型
dog.Feipan();
}else if(Pet instanceof penguin){
penguin peng = (penguin)Pet;
peng.Youyong();
}else if(Pet instanceof Cat){
Cat cat=(Cat)Pet;
cat.boll();
}
}
}
import java.util.Scanner;
public class Test {
/**
* @param args
*
* 测试类
*/
public static void main(String[] args) {
//多态形式一
penguin peng = new penguin();
Dog dog = new Dog();
Cat cat = new Cat();
mastr ms = new mastr();
ms.feed(dog);
ms.feed(peng);
ms.feed(cat);
//多态形式二 (父类做引用类型 子类实例化)
pet Pet =new Dog();//new 谁 就执行谁
Pet.eat();
//调用领养宠物 形式三(父类方法返回值 子类实例化)
System.out.println("请选择:(1-领养狗 2-领养企鹅 3-领养猫)");
Scanner input = new Scanner(System.in);
int choose = input.nextInt();
// mastr dx = new mastr();
pet Pets = ms.getpet(choose);
Pets.eat();
ms.Play(dog);
}
}