[java][24]多态形式3:父类作为方法返回值;instanceof关键字

java小白的学习记录......

1. 本文将介绍

1)多态形式3:父类作为方法返回值;

2)instanceof关键字 -- 父类转换为子类(强制类型转换)

2. 实例 ( 颜色对应以上2点 )

继续利用上一篇博文 [java][23] 中的实例。

1)父类Pet:

public class Pet {
public void eat(){
System.out.println("Pet is eating.");
}

}

2)子类Dog

public class Dog extends Pet {
public void eat(){
System.out.println("Dog is eating meat.");
}

public void shakeHands(){    //Dog玩的方法

System.out.println("Dog plays shaking hands.");
}
}

3)子类Cat

public class Cat extends Pet{
public void eat(){
System.out.println("Cat is eating mice.");
}

public void climb(){   //Cat玩的方法
System.out.println("Cat plays climbing.");
}
}

4)子类Penguin

public class Penguin extends Pet{
public void eat(){
System.out.println("Penguin is eating fish.");
}

public void swim(){   //Penguin玩的方法
System.out.println("Penguin plays swimming.");
}
}

5)Master类

public class Master {
//多态形式3:父类作为方法返回类型,子类实例化  类型自动转换
public Pet getPet(int typeId){
Pet pet=null;
if(typeId==1){
pet=new Dog();
}
else if(typeId==2){
pet=new Penguin();
}
else if(typeId==3){
pet=new Cat();
}
return pet;
}



// * 父类转换为子类:向下转换 (强制) instanceof 

        //*(子类转换为父类:向上转换 (自动))

        //主人和宠物一起玩

public void play(Pet pet){
if(pet instanceof Dog){
Dog dog=(Dog)pet;//向下转换
dog.shakeHands();
}
else if(pet instanceof Penguin){
Penguin penguin=(Penguin)pet;
penguin.swim();
}
else if(pet instanceof Cat){
Cat cat=(Cat)pet;
cat.climb();
}
}

}

6)测试Test.java

import java.util.*;
public class Test {
public static void main(String[] args){

Dog dog=new Dog();
Penguin penguin=new Penguin();
Cat cat=new Cat();

//多态形式3:父类作为方法返回类型,子类实例化  类型自动转换
//调用领养宠物 
System.out.println("Please choose a kind of pet:(1-Dog,2-Penguin,3-Cat)");
Scanner input=new Scanner(System.in);
int choice=input.nextInt();
Master master=new Master();
Pet pet2=master.getPet(choice);

pet2.eat();

//结果:




         // instanceof关键字

master.play(dog);
master.play(penguin);

master.play(cat);

//结果


}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值