继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法;
继承的关系特点描述出来就是:** “是” ** (例如:学生类 是 人类)
组合关系描述的语句是:**** “拥有” *** (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 )
继承示例代码:
#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
黑马程序员-OC面向对象继承关系和组合关系笔记,布布扣,bubuko.com
原文:http://www.cnblogs.com/cxbblog/p/3708572.html