A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dawn.dai 中级黑马   /  2014-4-29 17:12  /  1055 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这两个都可以扩充原类/父类,category不能添加新的成员变量,只能创建方法,继承却可以,都用继承不就得了嘛?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

2 个回复

倒序浏览
Category是对一个功能完备的类的一种补充,就像是一个东西的主要基本功能都完成了,可以用category为这个类添加不同的组件,使得 这个类能够适应不同情况的需求(但是这些不同需求最核心的需求要一致)。找个就像你已经有了一辆能够开动的汽车一样,我们可以用Category为你的汽 车添加各种之前没有的功能,最后让这辆汽车变成超级跑车一样。
当某个类非常大的时候,Category可以按不同的功能将类的实现分在不同的模块中实现。
继承则是都可以完成上面的工作,但是继承有很大的代价问题,一是通过继承来进行扩展是一种耦合很高的行为,对父类可以说是完全依赖;二是继承由于 对父类依赖,所以开发代价相对大,要求对父类的工作流程相对熟悉;三是继承体系如果太复杂会导致整个系统混乱,难以维护。什么情况才是迫不得已要使用继承呢?那就是如果你既想提供一系列接口的定义,同时又想提供一些但是又不能提供全部的实现的 时候,这种情况就要使用继承了。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
category 降低了代码的耦合性,在不改变原来代码的基础上就能扩展类的方法。扩展的时候只要增加新文件。

继承的话,耦合性就高了。而且在父类指向子类方法的时候还要强转类型
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马