面向对象(一)

基础

一.面向对象程序设计的特点

1.封装(encapsulation)
  • 属性私有:对外提供公有的getter/setter
  • public:公有;private:私有;protected:受保护的
  • 例如:树类(封装了它的价格,名字,给其提供了getter/setter,让其共有化)
    。 封装


    封装.png

    。提供getter/setter


    提供.png
2.继承(succession)
3.多态(polymorphic)

二.类之间的关系

1.纵向关系:比较清晰
  • 继承:父子关系——extends
  • 实现:类对接口的实现——implements
2.横向关系:取决于语义
  • 依赖
    。双方的地位往往是独立平等的(地位)
    。 是偶尔的、临时性的、不频繁的(依赖程度)
    代码层面的表现形式而言,往往是局部的变量
    。类B以参数的形式传入类A的方法。
    。类B以局部变量的形式存在于类A的方法中。
    。类A调用类B的静态方法。
  • 工人和出租车
  • 关联
    。双方的地位往往是独立的、平等的(地位)
    。是长期的、稳定的、频繁的(依赖程度)
    代码层面的表现形式而言,关联往往以全局属性的形式存在
  • 程序员和电脑
  • 聚合
    。双方的地位不是平等的,是整体和部分之间的关系(地位)
    是长期的、稳定的、频繁的,这种关系比关联更强,以至于在形式上出现了整体和部分之间的关系。整体和部分都有自己的生命周期,一方的消失另外一方不会跟着消失。(依赖程度)
    。代码层面的表现形式而言可参考关联
  • 公司和员工
  • 组合
    。双方的地位不是平等的,是整体和部分之间的关系(地位)
    比聚合更强,部分的生命周期取决于整体,部分随着整体的消失而消失(依赖程度)
    代码层面的表现形式而言可参考关联
    区分是聚合还是组合的核心点是在生命周期
  • 小鸟和眼睛

大家的理解

微信图片_20181122134039.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我一出电梯,爸爸惊讶的说,“你不是说去玩一会吗?怎么不想玩啦,要回家努力学习么!哈哈,到底要不要玩啊?” “要!”...
    Kevin刘华涛阅读 233评论 0 0
  • 当你爱上一个人, 你就会不停地排除你的标准, 直到没有标准只有爱。
    戚布尔阅读 102评论 0 0
  • 今天参加了上午的一天的招聘会,,有意向面试了21人,有6位入围。90后,即将毕业生居多!(来单位最多的是保险业,互...
    真心爱礼阅读 197评论 0 4
  • 昨天接到大学室友兼闺蜜鸡蛋的电话,一开口还是正常语气问:在忙吗,就是想和你说说话。我还没来得及反应,对面便传来...
    呆呆家小菇凉阅读 369评论 0 0