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

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

2016-08-14 15:42 267 查看
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
plain copy

#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
plain copy

#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
plain copy

#import "Person.h"  

  

@interface men : Person  

  

@end  

然后是men.m:

[plain] view
plain copy

#import "men.h"  

  

@implementation men  

-(void)cry  

{  

    NSLog(@"男人就要哭得响亮");  

}  

@end  

women.h

[plain] view
plain copy

#import "Person.h"  

  

@interface women : Person  

  

@end  

women.m

[plain] view
plain copy

#import "women.h"  

  

@implementation women  

-(void)cry  

{  

    NSLog(@"女人就是要哭得委婉");  

}  

@end  

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

[plain] view
plain copy

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

}  

最后得到以下输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: