zoukankan      html  css  js  c++  java
  • 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

    人生之路,不忘初心,勿忘始终!
  • 相关阅读:
    运行带参数的python脚本
    调用其他python脚本文件里面的类和方法
    快速学会在JSP中使用EL表达式
    理解maven项目的pom.xml文件中,<scope>标签的作用——作用域以及依赖传递
    理解JavaWeb项目中的路径问题——相对路径与绝对路径
    hdu4417(Super Mario)—— 二分+划分树
    hdu4325-Flowers-树状数组+离散化
    poj3321-Apple Tree(DFS序+树状数组)
    数据的离散化
    POJ2676 – Sudoku(数独)—DFS
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/3999740.html
Copyright © 2011-2022 走看看