• 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

    人生之路,不忘初心,勿忘始终!
  • 相关阅读:
    Chelsio T520 T420安装iSER
    Chelsio T520 T420开启RDMA-NFS
    Chelsio T520 T420开启RDMA(服务器&&客户端)
    [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目
    android EditText中inputType的属性列表
    JavaSwing标准对话框
    Android反编译与防止反编译
    spinner的使用
    Content Provider基础
    字体颜色添加阴影效果
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/3999740.html
Copyright © 2020-2023  润新知