Objective-C的继承与复合

来源:互联网 发布:淘宝网衣服男装上衣 编辑:程序博客网 时间:2024/04/28 08:33

从毕业开始一直都在做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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 农业银行卡多次输错密码怎么办 想把店长弄走怎么办 济南银座卡过期了怎么办 银座购物卡丢失后怎么办 银座的卡丢了怎么办 银行卡换了旧卡怎么办 大理市民卡丢了怎么办 市民卡内的钱怎么办 宝付支付乱扣款怎么办 苏宁任性贷逾期怎么办 第二次跟家里开口要钱还网贷怎么办 网贷到家来要钱怎么办 网贷贷不了啦急要钱怎么办 百度推广竞价关键词太长怎么办 药店位置差客流少怎么办 网站上的用词违规怎么办 苹果16g内存不够怎么办 手机16g内存不够怎么办 在私企年纪大了怎么办 谷歌浏览器显示不安全打不开怎么办 4s密码多次错误怎么办 苹果4s手机系统错误怎么办 汽车充电口坏了怎么办 如果手机充不了电怎么办 淘宝买的家电坏了怎么办 衣服皱了没有熨斗怎么办 油烟机油盒坏了怎么办 实体店不给换货怎么办 台式电脑鼠标不动了怎么办 电脑开机一直长鸣报警怎么办 国外电话卡网速太慢怎么办 滴滴提现忘记登录密码怎么办 微信提现支付密码忘记了怎么办 小米手机前置摄像头打不开怎么办 mp4视频屏幕好小怎么办 投了简历没回应怎么办 借壳上市原股票怎么办 红米note3指纹解锁失灵怎么办 来分期刷脸失败怎么办 买到假货商家不承认怎么办 买到假货翻新货工商局怎么办