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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

面向对象的三大特性:封装、继承、多态。
我想请教的好似,封装到底如何理解,封装的到底是什么?
封装如何做到对修改关闭,对扩展开放,面向对象不是拒绝变化,而是拥抱变化,怎么理解呢?
设计模式中有句很经典的话, 抽象不应该依赖于具体实现,二者都应该依赖与抽象,这句话作何解?
这些是否可以在这次学习java的过程中得到答案呢?
开始以为 良好的扩展性的软件是因为有事先的良好的设计,但是 在《重构》这本书中提到,模式是重构的目标,并且重构得到模式,模式为重构提出了目标,而且一开始就是用模式大都会进入过度设计的误区,这有作何解?
如何使代码优雅?
什么是传说中的敏捷?

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

4 个回复

正序浏览
封装这个说道理很难说,举个简单的例子就是,如果我们需要看电视,那么在没有遥控器的情况下,我们就必须对一些部件进行操作,也就必须懂得电视是怎么做出来的,但如果我们把电视机内部封装好,只提供一个遥控器接口来负责控制电视机,那么想看电视的人就轻松多了,他不在需要知道电视是什么原理的。

从代码编写方面看,自己写所有代码其实无所谓,如果是团队合作的话,你的代码中一些成员被修改了,那么所有依赖于它的其他人所写的代码都要改,这样工作上麻烦会很大,但如果你仅仅提供一个外部方法让其他人调用,你就算把内部实现过成换了个样子,其他人也不会受到影响。
回复 使用道具 举报
贠(yun)靖 发表于 2012-3-10 20:07
面向对象:
面向对象是一种思想,从执行过程转变成指挥(调用)的过程。将功能封装进对象,强调具备了功能 ...

我觉得你这个只是理解了对手数据和数据操作的封装,还有一种说法叫封装变化,不知道你听说过没有,就是在软件开发的过程中,总会有一些地方会剧烈的变化,把这些剧烈(经常)变化的地方封装起来,尽量压缩变化带来的影响,这样一种封装的概念。
回复 使用道具 举报
面向对象:
面向对象是一种思想,从执行过程转变成指挥(调用)的过程。将功能封装进对象,强调具备了功能的对象,面向对象是基于面向过程的。为什么说是基于对象呢?比如猫抓老鼠,强调的是猫,并不是抓,而抓老鼠是封装在猫这个对象里面了;而抓老鼠,强调的是过程(动作过程),并不知道是谁在抓老鼠,这个动作属于谁?都不知道,想调用它。只能找这个动作过程,这就体现出来了封装性的好处。只要把一些功能封装在了某个对象中,不但自己可以随时调用它里面的任何功能,别人也可以调用。所以说面向对象在现实生活中随处可见,我们平时用的电脑,喝水的杯子,桌子,交通工具等等都是一个一个对象,只要他有存在的意义就一定有某种功能,所以我们每天都在面向各种对象,而自己其实也是一个对象!
比如:打开冰箱,存储进冰箱,关闭冰箱,都是强调动作的过程。
          而冰箱打开,冰箱存储,冰箱关闭,都是强调冰箱,而此时冰箱就是一个对象,
          在冰箱对象中有各种功能
人开门:名词提炼法,人控制门,开


   封装 其实概念大了去了  太大的我也说不清楚   类以内的说吧
   类中封装不同的函数  也就是某种事物的不同功能 可以通过类创建对象调用它具有的功能  
   而函数中其实也是一种封装    private私有化 也可以体现封装     
  我觉得封装其实就把一个类型的事物所具有的特有属性和功能都封装到一个类中  就好比人类 有很多技能一样 封装到人类的类中  在通过new出来的实例 也就是某个人
  就具备一些基本的函数方法了(人的基本技能)

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
看完你的问题我迷糊了。

我只知道敏捷型的英雄,攻击速度快,防御高,是我喜欢的类型{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马