objective c 中的继承和多态简单示意(二)
holydancer原创,如需转载,请在显要位置注明:
转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7334377
?
OC中的继承和JAVA,C++都有相似之处,很容易理解,虽然不能多继承,但是有专门的方法和途径解决这个问题,今天只做单继承和多态的简单示范,新建一个Person类,包括.h和.m文件,然后Men类和Women类继承自该类,并重写了继承过来的cry方法,然后在main()方法中创建实例指向父类Person引用,简单多态后输出语句,具体结构如下:
Person.h代码如下:
?
[plain]?view plaincopy?- #import?<Foundation/Foundation.h>??
- ??
- @interface?Person?:?NSObject??
- {??
- ????int?age;??
- ????NSString?*name;??
- }??
- -(void)setAge:(int)age?setName:(NSString?*)name;//age?和?name的set方法??
- -(void)cry;??//呆会儿子类继承该方法后要复写??
- //下面是age和name的get方法,不写get是因为OC中get方法一般以指针为参数;??
- -(int)age;??
- -(NSString?*)name;??
- @end??
Person.m代码如下:
?
?
[cpp]?view plaincopy?- #import?"Person.h"??
- ??
- @implementation?Person??
- -(void)setAge:(int)a?setName:(NSString?*)n????
- {??
- ????name=n;???????????
- ????age=a;??
- }??
- -(int)age??????
- {?????????????????????
- ????return?age;??
- }??
- -(NSString?*)name??
- {??
- ????return?name;??
- }??
- -(void)cry??
- {??
- ????NSLog(@"是人都会哭");??
- }??
- @end??
?
接下来是men.h:
?
?
[plain]?view plaincopy?- #import?"Person.h"??
- ??
- @interface?men?:?Person??
- ??
- @end??
然后是men.m:
?
?
[plain]?view plaincopy?- #import?"men.h"??
- ??
- @implementation?men??
- -(void)cry??
- {??
- ????NSLog(@"男人就要哭得响亮");??
- }??
- @end??
women.h
?
?
[plain]?view plaincopy?- #import?"Person.h"??
- ??
- @interface?women?:?Person??
- ??
- @end??
women.m
?
?
[plain]?view plaincopy?- #import?"women.h"??
- ??
- @implementation?women??
- -(void)cry??
- {??
- ????NSLog(@"女人就是要哭得委婉");??
- }??
- @end??
最后在main()方法中进行测试:
?
?
[plain]?view plaincopy?- #import?<Foundation/Foundation.h>??
- #import?"Person.h"??
- #import?"men.h"??
- #import?"women.h"??
- ??
- int?main(int?argc,?const?char?*?argv[])??
- {??
- ??
- ????@autoreleasepool?{??
- ????????Person?*person?=?[Person?new];??
- ????????Person?*man?=?[men?new];//子类对象指向父类引用;??
- ????????Person?*woman?=?[women?new];??
- ????????[man?setAge:23?setName:@"男人"];//子类对象使用继承来的方法;??
- ????????[woman?setAge:21?setName:@"女人"];??
- ????????NSLog(@"我的名字是%@,我的年龄是%d",[man?name],[man?age]);??
- ????????NSLog(@"我的名字是%@,我的年龄是%d",[woman?name],[woman?age]);??
- ????????[person?cry];//父类中的cry方法;??
- ????????[man?cry];??//子类对象复写了父类的方法;??
- ????????[woman?cry];??
- ????????
- ????}??
- ????return?0;??
- }??
最后得到以下输出结果:
?
?
关键字:objective-c ,objective c , oc ,继承,多态 ,面向对象