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

    xiaoxiao2025-04-12  13

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

    转自holydancer的专栏,原文地址: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;   }   最后得到以下输出结果:

    转载请注明原文地址: https://ju.6miu.com/read-1297974.html
    最新回复(0)