父类到子类的转换和instanceof运算符

主讲教师:王少华 QQ群号:483773664

学习目标:

1)   父类与子类转换:向下转换

2)   掌握instanceof运算符的使用

一、  问题:实现主人与宠物的玩耍功能

(一)   需求:

    狗玩接飞船游戏,狗的健康值减少10,与主人亲密度增加5

    和企鹅玩游泳游戏,企鹅的健康值减少10,与主人亲密度增加5

(二)   实现思路

1)   Dog类添加catchingFlyDisc方法,实现接飞盘功能;

2)   Penguin类添加swimming方法,实现游泳功能;

3)   给主人添加play(Pet pet)方法,如果pet代表Dog就玩接飞盘游戏,如果pet代表Penguin就玩游泳游戏。

4)   创建测试类,其中创建主人、狗和企鹅对象,调用相应的方法实现主人和宠物玩耍功能。

(三)   具体实现

下面按照步骤逐步完成该任务。

1.  Dog

1
2
3
4
5
6
7
8
/**
     * 实现接飞盘方法
     */
    public void catchingFlyDisc() {
        System.out.println("狗狗" + this.getName() + "正在接飞盘。");
        this.setHealth(this.getHealth()-10);
        this.setLove(this.getLove()+5);
    }

2.  Penguin

1
2
3
4
5
6
7
8
/**
    * 实现游泳方法
    */
   public void swimming() {
       System.out.println("企鹅" + this.getName() + "正在游泳。");
       this.setHealth(this.getHealth()-10);
       this.setLove(this.getLove()+5);
   }

3.  Master

1
2
3
4
public void Play(Pet pet){
 //1 判断Pet是什么对象
 //2 将Pet转化为具体对象,因为父对象没有办法调用子对象的特有的方法
 }

二、  父类到子类的转换(向下转型)

将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。

(一)   需求

如果把Dog对象赋给Pet类型引用变量后,又希望和Dog玩接飞盘游戏,应该怎么办呢?

(二)   实现

1
2
3
4
5
6
7
8
public class Test {
    public static void main(String[] args) {
        Pet pet = new Dog(©著作权归作者所有:来自51CTO博客作者imentors的原创作品,如需转载,请注明出处,否则将追究法律责任

0

收藏

imentors

105篇文章,8W+人气,0粉丝

Ctrl+Enter 发布

发布

取消

0

分享
imentors