第十五讲:Objective-C特性之继承与重写
1、创建两个类,Father和Son2、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 16:00 编辑1、子类能够继承父类中的所有方法,方法默认为public属性;
2、变量默认为protected属性,子类可直接继承,但如果父类中申请变量为prviate,则不能被继承;
3、子类如果需要访问父类中的private变量,可通过父类的方法来实现;
4、Son子类中不需要申明父类中的方法,可直接重写并覆盖。
Objective-C基本特性之虚方法
OC中的方法都为虚方法,什么叫虚方法,以上述为例,用一个简单的操作来进行说明;在main函数中插入两行代码:Father * p = son;
;
输出的结果为:
2014-01-11 16:02:25.227 Rewrite I can jump 1.8m
即,父类创建的对象可以直接访问子类的方法;
调用方法时不看指针,看对象,这类方法叫虚方法。
页:
[1]