08-继承和组合

1、继承的使用场合 (继承与组合)

  (1) 当两个类拥有相同属性和方法的时候,就可以将相同的属性和方法抽取到一个父类中。

  例如:Dog 和 Cat 都拥有年龄、体重等属性,就可以把相同的属性抽取到 Animal类中;Dog 和 Cat 继承Animal,Dog Cat是子类,Aniaml是父类。

  当两个类可以用 XXX 是 xxx的形式描述的时候,它们是继承关系。

  例如:Student 是 Person 它们是继承关系 

         Dog 是 Animal 它们是继承关系

  (2) 当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类

1>继承:

{

  int _age;

  int _no;

}

B : A

{

  int _weight;

}

2>组合:

{

  int _age;

  int _no;

}

B

{

  A *_a;

  int _weight;

}

但是有另一种情况:

 1 @interface Score : NSObject
 2 {
 3     int _cScore;
 4     int _ocScore;
 5 }
 6 @end
 7 
 8 @implementation Score
 9 @end
10 
11 @interface Student : NSObject
12 {
13     // 组合
14     Score *_score;
15     //    int _cScore;
16     //    int _ocScore;
17     int _age;
18 }
19 @end
20 
21 @implementation Student
22 
23 @end

      学生和成绩,二者都拥有cScore和ocScore属性,但是我们不能说学生是成绩或学生继承成绩,这不合乎逻辑;但是我们可以说学生拥有成绩,把成绩变成学生的一部分(成员属性),这种关系就是组合关系

      再例如:Dog拥有年龄和体重的属性,Person也有年龄和体重属性

我们不能说 Dog是Person ,这样不合逻辑,这时候,我们就要换种说法:Person 拥有 Dog,这种关系便是组合关系。

  (3) 简单一点理解,判断的时候套用一下描述

  继承: xx  是 xx

  组合:xxx 拥有 xxx

人生之路,不忘初心,勿忘始终!
原文地址:https://www.cnblogs.com/xdl745464047/p/3999740.html