zoukankan      html  css  js  c++  java
  • 面向对象里is-a和has-a的含义

    面向对象的核心思想是:抽象、封装、继承、多态。在实践中用的最多的术语就是 is a(是一个) ,和 has a(有一个)。
    其实他们的意思很简单,对应面向对象设计中的两种形态继承、组合。

    一、继承( is a)

    继承应该大家都明白了,主要是多态的体现,可以用子类替换父类。两个类之间是继承关系。
    例如:

    class Person{}
    class Student extends Person{}
    
    Person p = new Student()

    学生类继承了人类,那么我们可以说“学生是一个人类”,即 is-a是一个的关系。同时变量 p ,我们声明为Person类型,但是可以给它赋值一个Student类型的对象。这就是多态的体现,是一种设计模式。

    二、组合(has a)

    has-a 有一个也是一种设计模式。表示这个对象包含另外一个对象,也表示这个对象依赖于另一个对象。所谓的包含就是另一个对象它是这个对象的属性,仅此而已。两个类之间是组合关系。

    例如:

    class Engine{} //引擎类
    class Car{
      Engine engine;
    }  //汽车类

    我们有一个引擎类,有一个汽车类,汽车类有一个引擎类的属性。汽车类和引擎类就是组合关系。即汽车有一个(has a) 引擎。

    总结:明白这两个术语的内涵,对于理解面向对象设计模式非常重要。

  • 相关阅读:
    51nod 1004 n^n的末位数字
    51nod 1003 阶乘后面0的数量
    unity3d-多媒体与网络
    unity3d-代码控制游戏角色控制器移动
    unity3d-角色控制器续
    unity3d-物理引擎
    unity3d-碰撞检测
    unity3d-射线(Ray)
    unity3d-小案例之角色简单漫游
    unity3d-绘制贴图
  • 原文地址:https://www.cnblogs.com/beenupper/p/12534463.html
Copyright © 2011-2022 走看看