think in java3,think of java,thinking in java,java plug in,thingking in javathink,think pad,think of me,think of you,

这一章的目的是要让我们对oop和java的诸多要点,包括oop为何如此与众不同,以及为什么java又格外的突出有一个初步的认识。
zhe yi zhang de mu de shi yao rang wo men dui oop he java de zhu duo yao dian bao kuo oop wei he ru ci yu zhong bu tong yi ji wei shen me java you ge wai de tu chu you yi ge chu bu de ren shi

一、抽象的过程
yi chou xiang de guo cheng

能解决的问题的复杂程度与抽象的种类与质量有关。因为抽象能够帮助我们更好的去理解问题,去划分任务从而解决问题。抽象的工作是数据结构去做的,一种程序语言为我们提供了把以抽象的问题去实施的平台。oop提供了比过程语言更好的抽象平台。它允许我们从问题的角度去组织程序。这是因为对象这个概念能让我们依照概念把数据与功能结合在一起,这样就可以站在解决问题的角度上去写代码。这样去写程序肯定更加符合我们的思维习惯,也就更加容易人们理解以便于日后的维护。
neng jie jue de wen ti de fu za cheng du yu chou xiang de zhong lei yu zhi liang you guan yin wei chou xiang neng gou bang zhu wo men geng hao de qu li jie wen ti qu hua fen ren wu cong er jie jue wen ti chou xiang de gong zuo shi shu ju jie gou qu zuo de yi zhong cheng xu yu yan wei wo men ti gong le ba yi chou xiang de wen ti qu shi shi de ping tai oop ti gong le bi guo cheng yu yan geng hao de chou xiang ping tai ta yun hu wo men cong wen ti de jiao du qu zu zhi cheng xu zhe shi yin wei dui xiang zhe ge gai nian neng rang wo men yi zhao gai nian ba shu ju yu gong neng jie he zai yi qi zhe yang jiu ke yi zhan zai jie jue wen ti de jiao du shang qu xie dai ma zhe yang qu xie cheng xu ken ding geng jia fu he wo men de si wei xi guan ye jiu geng jia rong yi ren men li jie yi bian yu ri hou de wei hu

这一章中给出了纯的面向对象编程方法的五个特征:
zhe yi zhang zhong gei chu le chun de mian xiang dui xiang bian cheng fang fa de wu ge te zheng

1.
1

万物皆对象。对象是类的一个实例。它存储数据,并且可以通过调用它的方法传递参数的方式给它传递信息,或是同时完成某项操作。
wan wu jie dui xiang dui xiang shi lei de yi ge shi li ta cun chu shu ju bing qie ke yi tong guo diao yong ta de fang fa chuan di can shu de fang shi gei ta chuan di xin xi huo shi tong shi wan cheng mou xiang cao zuo

2.
2

程序就是一组组相互之间调用方法传递消息,告诉对方要完成什么操作的对象。也就是说程序仅是由一组对象组成的,方法,字段都是属于对象的(定义在该对象所属的类中),不存在象c++中那样的可以独立于类之外的方法。
cheng xu jiu shi yi zu zu xiang hu zhi jian diao yong fang fa chuan di xiao xi gao su dui fang yao wan cheng shen me cao zuo de dui xiang ye jiu shi shuo cheng xu jin shi you yi zu dui xiang zu cheng de fang fa zi duan dou shi shu yu dui xiang de ding yi zai gai dui xiang suo shu de lei zhong bu cun zai xiang c++ zhong na yang de ke yi du li yu lei zhi wai de fang fa

3.
3

每个对象都利用别的对象来组建它自己的记忆。就是说对象的记忆是通过存储其它类型的对象(应该主类型的一个变量也算)表现出来的。并且由于每个类的对象都有些特殊的操作,因此我们可以将一个复杂的功能分解到若干个不同的类中,最后再将它们在一个类中组合起来。
mei ge dui xiang dou li yong bie de dui xiang lai zu jian ta zi ji de ji yi jiu shi shuo dui xiang de ji yi shi tong guo cun chu qi ta lei xing de dui xiang ying gai zhu lei xing de yi ge bian liang ye suan biao xian chu lai de bing qie you yu mei ge lei de dui xiang dou you xie te shu de cao zuo yin ci wo men ke yi jiang yi ge fu za de gong neng fen jie dao ruo gan ge bu tong de lei zhong zui hou zai jiang ta men zai yi ge lei zhong zu he qi lai

4.
4

对象都有类型。任何一个对象都是一个类的实例。
dui xiang dou you lei xing ren he yi ge dui xiang dou shi yi ge lei de shi li

5.
5

所有属于同一类型的对象都能接受相同的消息。这是因为同一个类的对象都拥有相同的方法集。即使是该类型是继承自某基类,它也拥有与该基类可见的相同的方法集,所以说一个子类的对象也是一个父类的对象是没错的。
think in java3,think of java,thinking in java,java plug in,thingking in javathink,think pad,think of me,think of you,

suo you shu yu tong yi lei xing de dui xiang dou neng jie shou xiang tong de xiao xi zhe shi yin wei tong yi ge lei de dui xiang dou yong you xiang tong de fang fa ji ji shi shi gai lei xing shi ji cheng zi mou ji lei ta ye yong you yu gai ji lei ke jian de xiang tong de fang fa ji suo yi shuo yi ge zi lei de dui xiang ye shi yi ge fu lei de dui xiang shi mei cuo de
think in java3,think of java,thinking in java,java plug in,thingking in javathink,think pad,think of me,think of you,


关于对象有一种简洁的定义:对象有状态(字段)、行为(方法)和标识(该对象的存储地址)。字段存储状态,方法完成操作,标识标识对象。
guan yu dui xiang you yi zhong jian jie de ding yi dui xiang you zhuang tai zi duan hang wei fang fa he biao shi gai dui xiang de cun chu di zhi zi duan cun chu zhuang tai fang fa wan cheng cao zuo biao shi biao shi dui xiang

二、对象有接口
er dui xiang you jie kou

属于同一个类的对象拥有相同的接口(提供给处界访问的方法)。因为类描述的就是一组具有相同特征(字段)和行为(方法)的对象。从编程系统的角度来说,它与那些主类型并无不同,只是类是人们为了完成特殊的功能自定义的罢了。
shu yu tong yi ge lei de dui xiang yong you xiang tong de jie kou ti gong gei chu jie fang wen de fang fa yin wei lei miao shu de jiu shi yi zu ju you xiang tong te zheng zi duan he hang wei fang fa de dui xiang cong bian cheng xi tong de jiao du lai shuo ta yu na xie zhu lei xing bing wu bu tong zhi shi lei shi ren men wei le wan cheng te shu de gong neng zi ding yi de ba le

在把问题抽象为若干个类之后就可以创建任意多个类的对象去解决问题了。我们可以通过访问对象的接口来完成所要的操作。其实用户真正访问的是实现了这个接口的方法。接口只规定了这个操作需要什么参数,以及返回什么,而方法则具体实现了这个接口。在java中,只包含接口的被称为interface,包含了方法的才称为class,既有接口也有方法的是abstract
zai ba wen ti chou xiang wei ruo gan ge lei zhi hou jiu ke yi chuang jian ren yi duo ge lei de dui xiang qu jie jue wen ti le wo men ke yi tong guo fang wen dui xiang de jie kou lai wan cheng suo yao de cao zuo qi shi yong hu zhen zheng fang wen de shi shi xian le zhe ge jie kou de fang fa jie kou zhi gui ding le zhe ge cao zuo xu yao shen me can shu yi ji fan hui shen me er fang fa ze ju ti shi xian le zhe ge jie kou zai java zhong zhi bao han jie kou de bei cheng wei interface bao han le fang fa de cai cheng wei class ji you jie kou ye you fang fa de shi abstract

class。而interface和abstract
class er interface he abstract

class是不能够直接创建对象的。
class shi bu neng gou zhi jie chuang jian dui xiang de

三、对象会提供服务
san dui xiang hui ti gong fu wu

应该将对象视作服务,这样可以更好的去分解问题。在一个良好的面向对象设计中,每个对象都应该只做一件事,并且做好一件事。这样不仅能在设计时条理清晰,而且可以帮助别人理解代码或者在以后遇到相同功能的服务时复用这个对象。
ying gai jiang dui xiang shi zuo fu wu zhe yang ke yi geng hao de qu fen jie wen ti zai yi ge liang hao de mian xiang dui xiang she ji zhong mei ge dui xiang dou ying gai zhi zuo yi jian shi bing qie zuo hao yi jian shi zhe yang bu jin neng zai she ji shi tiao li qing xi er qie ke yi bang zhu bie ren li jie dai ma huo zhe zai yi hou yu dao xiang tong gong neng de fu wu shi fu yong zhe ge dui xiang

四、隐藏实现(封装性)
si yin cang shi xian feng zhuang xing

程序员可分为两类,即类的创建者和使用这些类去编程的客户程序员。为了更好的让这两类程序员各司其职,我们就需要隐藏一部分实现,而只让客户程序员只看到他们需要的东西。这样,如果类中某个功能需要重新实现或是修正什么bug时就只需要修改这类的代码就行了,而不用去更动提供给客户程序员的接口,这样也就无需更动客户程序员管理的那部分代码。并且提供了一个类也就好像是提供了一个零件,如果接口与实现都是统一的,后人的维护也容易些,因为方便提供标准的文档。但如果每个人都有权力去更改类的实现,那么,想想吧…
cheng xu yuan ke fen wei liang lei ji lei de chuang jian zhe he shi yong zhe xie lei qu bian cheng de ke hu cheng xu yuan wei le geng hao de rang zhe liang lei cheng xu yuan ge si qi zhi wo men jiu xu yao yin cang yi bu fen shi xian er zhi rang ke hu cheng xu yuan zhi kan dao ta men xu yao de dong xi zhe yang ru guo lei zhong mou ge gong neng xu yao zhong xin shi xian huo shi xiu zheng shen me bug shi jiu zhi xu yao xiu gai zhe lei de dai ma jiu hang le er bu yong qu geng dong ti gong gei ke hu cheng xu yuan de jie kou zhe yang ye jiu wu xu geng dong ke hu cheng xu yuan guan li de na bu fen dai ma bing qie ti gong le yi ge lei ye jiu hao xiang shi ti gong le yi ge ling jian ru guo jie kou yu shi xian dou shi tong yi de hou ren de wei hu ye rong yi xie yin wei fang bian ti gong biao zhun de wen dang dan ru guo mei ge ren dou you quan li qu geng gai lei de shi xian na me xiang xiang ba

因此控制访问权限的首要原因就是禁止那些客户程序去碰他们不该动的东西,其次是能够允许类库设计人员能在不打搅客户程序员的情况下修改类库。
yin ci kong zhi fang wen quan xian de shou yao yuan yin jiu shi jin zhi na xie ke hu cheng xu qu peng ta men bu gai dong de dong xi qi ci shi neng gou yun hu lei ku she ji ren yuan neng zai bu da jiao ke hu cheng xu yuan de qing kuang xia xiu gai lei ku

java中有四种控制权限,分别是public,package,protected和private。其中package关键字不用明确写出,缺省情况下就是它了。public表示后面跟着的东西谁都能访问;package表示它后面的东西同一个包中的类中可以访问;protected表示后面跟着的东西只有继承自它的子类中或同一个包中的类才能使用(这说明protected权限的范围涵盖了package的范围);private表示后面跟的东西只有在这个类的内部才能访问。
java zhong you si zhong kong zhi quan xian fen bie shi public,package,protected he private qi zhong package guan jian zi bu yong ming que xie chu que sheng qing kuang xia jiu shi ta le public biao shi hou mian gen zhe de dong xi shui dou neng fang wen ;package biao shi ta hou mian de dong xi tong yi ge bao zhong de lei zhong ke yi fang wen ;protected biao shi hou mian gen zhe de dong xi zhi you ji cheng zi ta de zi lei zhong huo tong yi ge bao zhong de lei cai neng shi yong zhe shuo ming protected quan xian de fan wei han gai le package de fan wei ;private biao shi hou mian gen de dong xi zhi you zai zhe ge lei de nei bu cai neng fang wen


think in java3,think of java,thinking in java,java plug in,thingking in javathink,think pad,think of me,think of you,