多态总结

来源:互联网 发布:外贸数据网 编辑:程序博客网 时间:2024/05/29 18:00

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

父类指针指向子类对象

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
原创粉丝点击