您的位置:首页 > 移动开发 > Objective-C

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

2014-05-06 17:56 549 查看
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;

}

最后得到以下输出结果:



原文地址:http://blog.csdn.net/holydancer/article/details/7334377
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: