多态总结

多态的意思:多种形态(对象的多种形态)

父类指针指向子类对象

Animal * a = [Dog new];

调用方法时会检测对象的真实形象

[a eat];//调用的还是子类的方法(Dog)


多态的使用注意


当使用多态的时候要注意逻辑性


比如

//如果这样写的话 狗是一只猫  明显是错误的

但是编译器并不会报错

Cat * c = [Dog  new];


多态的好处


如果参数中使用的父类类型 那么父类和子类类型都可以传入


比如说想喂狗和猫

定义声明以后


声明一个函数


void feed(Animal *a)

{

[a eat];

}


接着在main函数里面

创建动物对象以及猫和狗对象

然后

Animal *aa = [Animal new];

feed(aa)//表示把对象动物  传入给了函数feed里面去  就可以喂动物了


同样的

Dog *dd = [Dog new];

feed(dd);//把动物这个对象也传入给了函数feed 就可以给狗喂东西了


eat动物吃东西和feed 喂动物是不一样的




多态的局限性


不能直接用父类指针调用子类方法


强转

Animal *aa =[Dog new];


Dog *dd = (Dog *)aa;//把父类类型强转成Dog(子类)类型


多态总结

1>没有集就没有多态

2>代码的体现:父类类型的指针指向子类对象

3>好处:如果函数\方法参数中使用的是父类类型,可以传入父类,子类对象

4>局限性

父类类型的变量 不能 直接调用子类特有的方法.必须强转为子类类型变量后,才能直接调用子类特有的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值