Objective-C的继承与复合

从毕业开始一直都在做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类的实例变量。
更多的开发知识,可以关注我的公众号:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值