OC面向对象继承关系和组合关系笔记

继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法;

继承的关系特点描述出来就是:** “是” **  (例如:学生类 是 人类)

组合关系描述的语句是:**** “拥有” ***  (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 )

继承示例代码:

#import <Foundation/Foundation.h>

//Animal类的声明
@interface Animal : NSObject
{
    int _legs;
}

- (void)eat;
- (void)run;
@end

//Animal类的实现
@implementation Animal
- (void)eat
{
    NSLog(@"动物在吃东西");
    
}

- (void)run
{
    NSLog(@"动物在跑");
}

@end

//子类Dog 继承 Animal
@interface Dog : Animal
{
    //int _legs;这个是不允许的,重复定义父类已有的成员变量,编译器会报错,但是在java中是可以的
}

@end

//子类dog的实现
@implementation Dog
//方法的覆盖或叫重写
- (void)eat
{
    NSLog(@"狗在吃东西");
    
}
@end

int main()
{
    
    Dog *d = [Dog new];
    [d eat];//由于子类重写了,所以就用子类的eat方法
    [d run];//调用该方法时,还是会先在dog类中找,找不到时区父类中找
    
}

  继承的好处:

1:继承能够抽取重复的代码,提高了代码的重用;

2:继承使类和类之间建立了关系;

组合示例代码:

 1 //成绩类
 2 @interface Score : NSObject
 3 {
 4     int _cScore;
 5     int _ocScore;
 6 }
 7 @end
 8 
 9 @implementation Score
10 
11 @end
12 
13 
14 
15 //学生类
16 @interface Student : NSObject
17 {
18     //组合:_cScore,_ocScore这两个属性在Score类中有了,但是不适合用继承,用组合比较好
19     //int _cScore;
20     //int _ocScore;
21     Score *_score;
22     int _age;
23 }
24 @end
25 
26 @implementation Student : NSObject
27 
28 @end

 

转载于:https://www.cnblogs.com/cxbblog/p/3708572.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值