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);
//结果
}