首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

objective c 中的承袭和多态简单示意(二)

2013-10-24 
objective c 中的继承和多态简单示意(二)holydancer原创,如需转载,请在显要位置注明:转自holydancer的CSDN

objective c 中的继承和多态简单示意(二)

holydancer原创,如需转载,请在显要位置注明:

转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7334377

?

OC中的继承和JAVA,C++都有相似之处,很容易理解,虽然不能多继承,但是有专门的方法和途径解决这个问题,今天只做单继承和多态的简单示范,新建一个Person类,包括.h和.m文件,然后Men类和Women类继承自该类,并重写了继承过来的cry方法,然后在main()方法中创建实例指向父类Person引用,简单多态后输出语句,具体结构如下:

objective c 中的承袭和多态简单示意(二)

Person.h代码如下:

?

[plain]?view plaincopy?
  1. #import?<Foundation/Foundation.h>??
  2. ??
  3. @interface?Person?:?NSObject??
  4. {??
  5. ????int?age;??
  6. ????NSString?*name;??
  7. }??
  8. -(void)setAge:(int)age?setName:(NSString?*)name;//age?和?name的set方法??
  9. -(void)cry;??//呆会儿子类继承该方法后要复写??
  10. //下面是age和name的get方法,不写get是因为OC中get方法一般以指针为参数;??
  11. -(int)age;??
  12. -(NSString?*)name;??
  13. @end??


Person.m代码如下:

?

?

[cpp]?view plaincopy?
  1. #import?"Person.h"??
  2. ??
  3. @implementation?Person??
  4. -(void)setAge:(int)a?setName:(NSString?*)n????
  5. {??
  6. ????name=n;???????????
  7. ????age=a;??
  8. }??
  9. -(int)age??????
  10. {?????????????????????
  11. ????return?age;??
  12. }??
  13. -(NSString?*)name??
  14. {??
  15. ????return?name;??
  16. }??
  17. -(void)cry??
  18. {??
  19. ????NSLog(@"是人都会哭");??
  20. }??
  21. @end??

?

接下来是men.h:

?

?

[plain]?view plaincopy?
  1. #import?"Person.h"??
  2. ??
  3. @interface?men?:?Person??
  4. ??
  5. @end??


然后是men.m:

?

?

[plain]?view plaincopy?
  1. #import?"men.h"??
  2. ??
  3. @implementation?men??
  4. -(void)cry??
  5. {??
  6. ????NSLog(@"男人就要哭得响亮");??
  7. }??
  8. @end??


women.h

?

?

[plain]?view plaincopy?
  1. #import?"Person.h"??
  2. ??
  3. @interface?women?:?Person??
  4. ??
  5. @end??


women.m

?

?

[plain]?view plaincopy?
  1. #import?"women.h"??
  2. ??
  3. @implementation?women??
  4. -(void)cry??
  5. {??
  6. ????NSLog(@"女人就是要哭得委婉");??
  7. }??
  8. @end??


最后在main()方法中进行测试:

?

?

[plain]?view plaincopy?
  1. #import?<Foundation/Foundation.h>??
  2. #import?"Person.h"??
  3. #import?"men.h"??
  4. #import?"women.h"??
  5. ??
  6. int?main(int?argc,?const?char?*?argv[])??
  7. {??
  8. ??
  9. ????@autoreleasepool?{??
  10. ????????Person?*person?=?[Person?new];??
  11. ????????Person?*man?=?[men?new];//子类对象指向父类引用;??
  12. ????????Person?*woman?=?[women?new];??
  13. ????????[man?setAge:23?setName:@"男人"];//子类对象使用继承来的方法;??
  14. ????????[woman?setAge:21?setName:@"女人"];??
  15. ????????NSLog(@"我的名字是%@,我的年龄是%d",[man?name],[man?age]);??
  16. ????????NSLog(@"我的名字是%@,我的年龄是%d",[woman?name],[woman?age]);??
  17. ????????[person?cry];//父类中的cry方法;??
  18. ????????[man?cry];??//子类对象复写了父类的方法;??
  19. ????????[woman?cry];??
  20. ????????
  21. ????}??
  22. ????return?0;??
  23. }??


最后得到以下输出结果:

?

objective c 中的承袭和多态简单示意(二)

?

关键字:objective-c ,objective c , oc ,继承,多态 ,面向对象

热点排行