今天是正式下定决定学好IOS的第二天,用代码写了一个继承的励志。因为对比以往经验来说,继承直接影响了代码的美观性,可读性。
(再顺便mark一个疑问,IOS似乎并不重视抽象类的使用?网上有人说协议protocol可代替,可是还未领略到其中之美,mark有待观察)
OC继承实例代码如下:
目录结构:
基类:
BaseAnimal.h
#import <Foundation/Foundation.h>
@interface BaseAnimal : NSObject
-(void)eat;
-(void)runSpeed : (int) speed;
@end
BaseAnimal.m
#import "BaseAnimal.h"
@implementation BaseAnimal
-(void)eat
{
NSLog(@"Nothing!");
}
-(void) runSpeed : (int) speed
{
NSLog(@"runSpeed is %i" , speed);
}
@end
Dog.h
#import <Foundation/Foundation.h>
#import "BaseAnimal.h"
@interface Dog : BaseAnimal{
}
@end
Dog.m
#import "Dog.h"
@implementation Dog
- (void)eat
{
NSLog(@"Dog eat shit!");
}
@end
Cat.h
略.
Cat.m
#import "Cat.h"
@implementation Cat
@end
main.m
#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Cat.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Dog *d = [[Dog alloc] init];
[d eat];
[d runSpeed:5];
Cat *c = [[Cat alloc] init];
[c eat];
[c runSpeed:2];
}
return 0;
}
运行结果:
2015-09-14 23:54:46.412 Lesson2[888:303] Dog eat shit!
2015-09-14 23:54:46.414 Lesson2[888:303] runSpeed is 5
2015-09-14 23:54:46.415 Lesson2[888:303] Nothing!
2015-09-14 23:54:46.415 Lesson2[888:303] runSpeed is 2
Program ended with exit code: 0