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

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

2012-03-08 20:49 316 查看
holydancer原创,如需转载,请在显要位置注明:

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

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



Person.h代码如下:

#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代码如下:

#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:

#import "Person.h"

@interface men : Person

@end


然后是men.m:

#import "men.h"

@implementation men
-(void)cry
{
    NSLog(@"男人就要哭得响亮");
}
@end


women.h

#import "Person.h"

@interface women : Person

@end


women.m

#import "women.h"

@implementation women
-(void)cry
{
    NSLog(@"女人就是要哭得委婉");
}
@end


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

#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 ,继承,多态 ,面向对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: