黑马程序员技术交流社区
标题:
oc进阶之------>多态
[打印本页]
作者:
YuePr
时间:
2015-12-8 20:24
标题:
oc进阶之------>多态
// [代码说明:类的多态体现及用途]
// 说明:下方为伪代码,其中police是一个继承自person的类,thief 也是一个继承自person的类
@interface Person :NSObjec{ //---->父类
NSStrint *_name;
}
-(void)setName:(NSString *)name;
-(void)name;
@end
@implementation
-(void)setName:(NSString *)name{
_name = name;
}
-(NSString*)name{
return _name;
}
@end
@interface Police :person{} //子类police的声明
@end
.............实现省略
@interface Thief :person{} //子类thief的声明
@end
.............实现省略
void methdDisplay(Person *per)
{
NSlog(@"methdDISplay is %@",per.name);
}
int main()
{
Police *policeMan = [Police new];
policeMan.name = @"police SIR";
methdDisplay(policeMan); //此处打印的是:methdDISplay is police SIR
Thief *thiefA = [Thief new];
thiefA.name = @"xiaotou A";
methdDisplay(thiefA); //此处打印的是:methdDISplay is xiaotou A
return 0;
}
复制代码
作者:
YuePr
时间:
2015-12-10 22:48
本帖最后由 YuePr 于 2015-12-10 22:49 编辑
注意使用多态的时候,是子类中,有和父类同名的对象方法是,可以通过父类的指针直接访问子类的方法。
Person -> 父类
Police -> 子类
person *per = [Police new];
((police *)per).setGunType = @"AK47";
则此时 访问子类中特有的方法时 需要进行类型强转。
作者:
luoye111
时间:
2015-12-11 10:08
可以是可以,但是还是id更实用
作者:
iOS-lye
时间:
2015-12-11 12:19
多态是什么
作者:
YuePr
时间:
2015-12-16 22:18
使用id指针在后期的协议与代理学习时,可以使用 @property in<需要遵守的协议名> 成员变量名,则可以完成多态方式下的协议与代理操作,即任意何种类对象的指针只需要遵守了指定协议即可达到限定的条件。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2