第三章 多态

第三章 多态

多态

概念

多态是具有表现多种形的能力的特征。同一个实现接口,使用不同的实例而执行不同的操作

多态的用法
一、子类到父类的转换(向上转型)

简单的记忆就是:基本的数据类型转换

演示代码

Demo3_sl1_Pet pet=new Demo3_sl2_Dog("欧欧", "藏獒");
	Demo3_sl1_Pet pet1=new Demo3_sl3_Penguin("西西", "男");
	Demo3_sl1_Pet pet2=new Demo3_sl8_Cat("北北", "white");
	Demo3_sl4_Master master=new Demo3_sl4_Master("小跳", 200);
	master.feed(pet);
	master.feed(pet1);
	master.feed(pet2);
			
二、父类到子类的转换(向下转换)

简单的记忆:强制性数据类型转换

概念

将一个指向子类对象的父类引用赋给一个子类的引用

演示代码

int typeId=input.nextInt();
Demo3_sl1_Pet pet=master.getPet(typeId);

实现和使用多态的方式

  • 使用父类作为方法的形参

    public void feed(Demo3_sl2_Dog dog) {
    		dog.eat();
    	} 
    
  • 使用父类作为方法返回值实现

    Demo3_sl1_Pet pet=new Demo3_sl2_Dog("欧欧", "藏獒");
    	pet.eat();
    	pet.catchingFlyDisc();
    	Demo3_sl2_Dog dog=(Demo3_sl2_Dog)pet; //强制类型转换成狗的对象
    	dog.catchingFlyDisc(); //调用狗狗玩飞盘
    	Demo3_sl3_Penguin penguin=new Demo3_sl3_Penguin("西西", "女");
    	penguin.swimming();
    

instanceof运算符

语法

对象 instanceof 类或接口

用法

判断一个对象是否属于一个类或者实现了一个接口,结果为true或false

if(pet instanceof Demo3_sl2_Dog) {
		Demo3_sl2_Dog dog=(Demo3_sl2_Dog)pet;
		dog.catchingFlyDisc();
	}else if (pet instanceof Demo3_sl3_Penguin) {
		Demo3_sl3_Penguin penguin=(Demo3_sl3_Penguin)pet;
		penguin.swimming();
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值