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

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


Person.h代码如下:

[plain]  view plain copy
  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 plain copy
  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 plain copy
  1. #import "Person.h"  
  2.   
  3. @interface men : Person  
  4.   
  5. @end  

然后是men.m:

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

women.h

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

women.m

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

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

[plain]  view plain copy
  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. }  

最后得到以下输出结果:


原文地址:http://blog.csdn.net/holydancer/article/details/7334377

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值