Sian 发表于 2014-1-11 15:55:31

第十五讲:Objective-C特性之继承与重写

1、创建两个类,Father和Son
2、Father具有两个方法:run和jump;
3、Son继承Father类;
4、Son重写方法jump;
代码如下:
Father.h
//
//Father.h
//Rewrite
//
//Created by yusian on 14-1-11.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Father : NSObject

- (void) run;
- (void) jump;

@end
Father.m//
//Father.m
//Rewrite
//
//Created by yusian on 14-1-11.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import "Father.h"

@implementation Father

- (void) run{
    NSLog(@"He is running!");
}

- (void) jump{
    NSLog(@"I can jump 1.2m");
}

@end
Son.h
//
//Son.h
//Rewrite
//
//Created by yusian on 14-1-11.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import "Father.h"

@interface Son : Father

@end
Son.m
//
//Son.m
//Rewrite
//
//Created by yusian on 14-1-11.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import "Son.h"

@implementation Son

- (void) jump{
    NSLog(@"I can jump 1.8m");
}

@end
main.m
//
//main.m
//Rewrite
//
//Created by yusian on 14-1-11.
//Copyright (c) 2014年 yusian. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Father.h"
#import "Son.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
      
      Father * father = [ init];
      Son * son = [ init];
      ;
      ;
      ;
      ;
      
      ;
      ;
      
    }
    return 0;
}
输出结果:
2014-01-11 15:48:32.380 Rewrite He is running!
2014-01-11 15:48:32.382 Rewrite I can jump 1.2m
2014-01-11 15:48:32.383 Rewrite He is running!
2014-01-11 15:48:32.383 Rewrite I can jump 1.8m
Program ended with exit code: 0



Sian 发表于 2014-1-11 15:56:45

几点说明

本帖最后由 Sian 于 2014-1-11 16:00 编辑

1、子类能够继承父类中的所有方法,方法默认为public属性;
2、变量默认为protected属性,子类可直接继承,但如果父类中申请变量为prviate,则不能被继承;
3、子类如果需要访问父类中的private变量,可通过父类的方法来实现;
4、Son子类中不需要申明父类中的方法,可直接重写并覆盖。

Sian 发表于 2014-1-11 16:06:42

Objective-C基本特性之虚方法

OC中的方法都为虚方法,什么叫虚方法,以上述为例,用一个简单的操作来进行说明;在main函数中插入两行代码:
Father * p = son;
;
输出的结果为:
2014-01-11 16:02:25.227 Rewrite I can jump 1.8m

即,父类创建的对象可以直接访问子类的方法;
调用方法时不看指针,看对象,这类方法叫虚方法。
页: [1]
查看完整版本: 第十五讲:Objective-C特性之继承与重写