Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64411
  • 博文数量: 34
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-20 10:39
文章分类
文章存档

2010年(3)

2009年(5)

2008年(26)

我的朋友
最近访客

分类: Java

2009-11-19 13:25:19

  从实习的地方回学校,一直都在后悔,悔着自己为什么没有早点准备找工作,唉,现在都只剩下一些自己也不满意的企业。很长时间的笔试,面试,发现其实企业招聘也不是很难的事情,就看人品和技术。技术也没有要求很高,一般都是基础知识,和几个难题的解决思路。呵呵,人品还是不担忧自己。只是3个月的php实习时间把java 遗忘的差不多了,没办法。重新拿起书,think in java ,这次终于是要开始好好把这本书看一下了。
   这几天看书有了一些新的想法和看法。
   对于面向对象,特色:封装,继承,多态。
   首先,封装的特点,大家都知道,是为了把私人信息给隐藏起来,带来好处了,一是 使用者client没必要去了解private了的信息(message,在think in java 里面这么称呼);二是安全性,从系统的角度来看,如果类被private了,那他可能和其他的类之间的依赖就impossible了,提高内聚,降低耦合。public,default,protected,private 这四种不同的访问权限,让java在设计的时候有多种选择,根据类在系统的访问权限,四种抉择。回忆c的编程(越简单,速度越快,也就没有java那些方便可是处理麻烦的速度占用。)
   第二,继承,继承很大的特色,就是方便 reuse the code。 c里面使用函数来reuse code。可是没有对象的概念,可以将操作对象,也就是说,将操作封装在类里面,对类使用(依赖),继承这两种方式都可以reuse。这个的特色在于,清晰明了的可以看到这种操作(method)在哪个对象里面,分门别类,而不是一大堆的去寻找。  继承的时候,明确父类和子类,树的表达形式,非常明了,父类的特色可以被子类继承了,可以重写父类的方法(重载),也可以在父类的基础上面添加新的方法,好在哪里了,父类不用去改变,因为父类在树的顶层,如果改变了,树下面的其他地方也会有影响。将子类的修改影响降到最小,仅限在自己范围内,类似海,江,河,湖,假设海水流到江,流到河,流到湖。江水被污染,水不会倒流到海水,也不会影响到河,湖。java在继承的方面有两种, 一个是abstract 另外一个是interface。一个interface是全部都得让下级去修改,一个abstract是部分,这也是java里面的,提供多种形式,为了灵活。 这里也没有c++里面的多重继承。
  第三,多态,在《think in java》里面描述的是晚联编,late binding。 和c里面的early binding不同,因为c里面 要在编译的时候,找到其他函数的绝对地址,然后运行时直接使用编译时已经有的绝对地址。而late binding就是在运行时候才有地址, 在继承同一个父类的子类,才有自己的地址,然后寻到子类的地址。这也是面向对象编程和面向结构编程的差异。
“if you are a circle,do this, if you are a Square do that,....”
"if you are a shape ,you can erase() and draw()..." 就是说只要你是个shape,不管你是circle,还是square 都一样的。多态 好处在于也是减少其影响性,代码的易用。
 
   总结这三点,可以看出面向对象思想,围绕着,reuse code, 降低耦合,提高内聚这三点。这三点可以看为两点系统中要考虑的问题---一个是重新代码,一个是减小修改影响。而有时会与提高系统效率 有冲突。
如何平衡也是很重要的思考。
   与其说是新看法,不如说是换了一种角度去想了而已。思考是一种乐趣。
阅读(470) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~