从毕业开始一直都在做Android开发,近期开始学习Objective-C,接下来的几篇文章会具体介绍一些Objective-C的基础知识,也算是检验一下自己学习的成果。
对比代码效果更好一些,我将代码放在了github上:
https://github.com/mymdeep/OC_foundation
继承
继承的语法格式
@interface xxxx:NSObject
冒号后面的标识符是需要继承的类,需要注意的是OC不支持多继承,这点跟Android是一样的,需要的话可以通过类别或者协议来实现(后面会介绍),就好像Android的接口。
示例代码:
@interface Person : NSObject
{
NSString *name;
NSString *sex;
NSString *age;
Hand *hands[2];
Foot *foots[2];
}
-(void)setName:(NSString*) name;
-(void)setSex:(NSString*) sex;
-(void)setAge:(NSString*) age;
-(void)print;
-(void)desc;
@end
@implementation Person
-(void)setName:(NSString*) n{
name = n;
}
-(void)setSex:(NSString*) s{
sex = s;
}
-(void)setAge:(NSString*) a{
age = a;
}
-(void)print{
NSLog(@"name:%@,sex:%@,age:%@",name,sex,age);
}
-(id)init{
hands[0] = [Hand new];
hands[1] = [Hand new];
foots[0] = [Foot new];
foots[1] = [Foot new];
return self;
}
-(void)desc{
[hands[0] desc];
[foots[0] desc];
}
@end
这是我定义的一个Person类,如果此时我需要一个Student类,构造与Person一样,唯一不同的print方法不一样,我们可以像如下一样实现:
@interface Student : Person
@end
@implementation Student
-(void)print{
NSLog(@"学生:name:%@,sex:%@,age:%@",name,sex,age);
}
@end
super
当在子类想实现父类的方法时,可以使用super关键字:
-(void)print{
[super print];
NSLog(@"学生:name:%@,sex:%@,age:%@",name,sex,age);
}
复合
在objective-c中,复合是通过包含作为实例变量的对象指针实现的。例如上面代码中的Person类,包含一个Hand类的实例变量,一个Doot类的实例变量。
更多的开发知识,可以关注我的公众号:

网友评论