java面向对象编程:从C++到Java --理解面向对象是关键所在

从C到Java --理解面向对象是关键所在
-Ta2N0EC/B.H本文将提供个对这些概念简明解释而不是提供些深入或者如何使用问题记住这只是依据我对Java经验带而提出些主要差异 JAVA中文站社区门户Ig&gn$R+A6{#`5B
Java在虚拟机上运行
#|](I FD  Java源代码并不是被编译成为普通机器代码而是被翻译成为虚拟机可以执行代码个Java解释器最终执行这些代码这其中没有连接过程;解释在需要时候动态加载些类;JAVA中文站社区门户)HW1l/LB X7S
Java是完全面向对象
0FA(z;Nf#{{1| tL  Java是种完全面向对象语言这意味着你对任何个Java对象所做动作都是通过个思路方法实现点就是再也没有没有主这样孤立东西了取而代的你必须开始用个对象看法看待个类对象但是这个对象又什么对象呢?大多数Java只是简单通过继承Java基础类Object来实现所需要东西但是你可以通过创建基础类用于多个特性相似应用来节省时间
Zt5n U:~+QL2Y*ha  严格面向对象规定意味着理用原有C/C代码不可以直接不加改动使用;系统也是这样C你可以通过在C正常命名空间外声明extern"C"来使用原有C过程包括系统
R-]@ U$kp{-`/j  在Java中只有个类似安全回溯思路方法但是并不是十分简单思路方法你必须定义个本地思路方法其目是为C语言提供接口然后提供连接介质Java环境提供了完成这种任务工具但是整个过程和C中提供extern比微不足道完成使用C过程则更加复杂这样会引入对C借口和C和C成员问题JAVA中文站社区门户2YBhpAYrw3e
幸运许多常用系统实用工具已经在系统类中思路方法中提供出来但是这些明显没有包含经过许多年来你所创建那些类和过程所以在你需要时候你应该去钻研JAVA中文站社区门户l\0PoUn1s$P
Java中没有独立头文件JAVA中文站社区门户9WO*S3O_
  在Java中有关类切东西都被放到个单独文件中思路方法位置只可能在个地方出现个思路方法实现必须在它定义过程中同时进行这样做得优点是在实现时候不容易文件非同步而失败或者获取到个没有实现声明声明可以被Java解释器利用甚至是从个编译过单元中获取所以不再需要有头文件只要有编译过文件
Uy4}6j bf6H2^Io  这样做缺点和我们编程过程有关许多C员喜欢用头文件来代替文档要看个成员接口参数只需要看头文件中声明即可你可以经常看头文件即可了解怎样去使用这个类在Java中没有这样整理总结实现类思路方法代码必须在思路方法定义时候出现而且对于个单独代码来说就经常占据了整页乃至更多这样很难通过看Java代码就初步了解类是怎样使用你必须为你需要类准备足够多文档不言而喻再处理非商业类库时候文档是极度缺乏JAVA中文站社区门户C c$v6xqH$wM`5x
  在当先Java环境中提供了两个工具来补偿这些javap来打印类标识javadoc为嵌入式提供HTML文档JAVA中文站社区门户*k'_|$sI5V1v
用Package来分解Java命名空间JAVA中文站社区门户.b kn(a/xF6{ }{y
  在大C工程中经常遇到个问题是命名空间--怎样保证工程员不会创建和另样名字类?更糟糕供应商可能会提供个包含和你样名字有许多思路方法可以解决这问题但是很可能在问题发现的前工程已经启动改正是需要付出许多痛苦JAVA中文站社区门户8Hx:w[/i&`"YWa
  Java通过"Package"这个概念解决了这个问题Package有效地通过通过集合类划分了命名空间在区别包内两个同名类仍然是区别关键问题就变成了类是否放置到相应包中JAVA中文站社区门户ba6q ~W s.Z/J;yp
  记住Java并没有解决命名冲突问题扩展个基类而引起了派生类冲突比如说如果你最喜欢供应商提供了些类然后你把它们用做基类并且派生有个foo思路方法当供应商提供个新版本时候就可能出现如果供应商业也在新类中提供了个foo思路方法
y9jtkt异常是Java重要特性
gI6Ym)Tg ]X2tr  在C异常和异常处理是十分深奥事情;许多C员从没有处理过它们甚至不知道它们是何物异常是在正常过程中出现未预料因此它们不会从思路方法中返回或者作为参数传入;但是它们不能被忽略!这里个例子是计算个书方根思路方法正常接口形式是将个正数作为参数传入思路方法然后思路方法会返回个正实数作为结果思路方法可以检验这些并且在异常产生时候抛出异常在大多数系统中员并不是必须这样做这样个没有考虑到异常可以使不正常退出JAVA中文站社区门户Y\u'u L6r
  在Java中异常已经成为语言中非常成熟部分思路方法介绍说明中就包含了异常信息处理器也强制检验如果你使用了个能够产生异常思路方法你就必须检查异常是否发生几乎所有Java员都会遇到异常情况许多非常有用库中类都会抛出异常处理异常并不难但是在些时候是需要注意个思路方法文档会指明思路方法抛出异常类型如果你忘了不要紧编译器会提醒你
+@0V"Ilkwl/`Y串不再是
Iv]nucqZ%f V a  Java中包括了对象并且是个常量串不像虽然可以简单构造你应该尽可能串代替他们不会误操作而被覆盖
K] ~,~6y2|Java限制了常量对象和思路方法
Ci6ru^ dC7K  在C你可以正式声明参数或者返回值为const类型这样可以有效防止对参数或者返回值不正当修改另外你可以声明个成员为const表明它不可以修改任何他操作对象
$\"PyL;i)TAX  Java支持常量操作符只读变量这些通过final关键字实现但是Java没有支持强制使个可写变量在传递、返回过程中变为只读或者定义个不操作修改对象常量思路方法
z/]h/y1_  在Java中这个省略带来影响和在C中相比就非常小了这很大程度上串变量和区别但是这也带来个引起隐患特别地没有办法检验个思路方法是否可以改动对象
U uFwjJava没有指针JAVA中文站社区门户a8f;r V#e~_
  理解指针概念是个C或C员最难应付问题指针也是产生大根源Java中没有指针对象句柄直接作为参数传递而不是传递指针另外你必须通过索引使用这些都不是什么大问题然而没有指针是在写含有指针或者成员指针系统时候引起很大麻烦这个问题在处理回调时候更加显著JAVA中文站社区门户J:Zg:@,r"_
Java没有参数化类型JAVA中文站社区门户-l0c)t`r6jE)j;GY~
  参数化类型提供了用处理许多相似思路方法个例子就是开平方根思路方法它可以对或者float操作在C特性是由模板提供
hx,f9z$d  Java中不包含C模板等价物如果你经常使用模板来简化比如说构造许多使用相似参数类型这简直就是灾难这意味着更多使用复制、粘贴过程来手动完成然而如果你使用模板来生成类没有简单思路方法JAVA中文站社区门户 Th0D5e+KV
Java使用垃圾回收JAVA中文站社区门户 a&fI+Th8a
  在垃圾回收语言中运行时环境直监测哪些内存不被使用块内存不用时候系统自动回收内存比如说个对象在个思路方法中生成但是没有被着返回或者没有储存为全局变量不能在思路方法外部使用系统自己会知道哪些变量是你用不到哪些是可以用到因此你不必再为破坏对象回收内存而担心在C很多调试时间都被使用到检查内存漏洞中Java这种思路方法很大程度上降低了这种可能但是他依然不能处理逻辑混乱他们不能够被回收许多C类中析构是用来释放对象引用内存Java使垃圾回收事实介绍说明在Java中不是必需写析构但是并不意味着你可以忘记为你类写析构比如个对象打开了网络连接就必须被恰当清理来关闭这个连接在Java中析构被称作"finalization"思路方法JAVA中文站社区门户u,v2c^zM
Java不支持多重继承
7~Ay)qM Y6Hot  在任何个复杂面向对象系统中实现个有更多思路方法新类是十分经常遇到事情比如说个Manager类需要被作为个连表表头但是个Manager又必须是个Employee有许多思路方法来处理这样问题个思路方法是允许从多个类继承在这个例子中Manager需要从Linked List和Employee继承
.~XEMC:^S,G  Java没有多重继承但是你可以声明接口--来描述实现些功能编程接口个类可以由多个接口实现包括他唯功能区别类可以由同样接口实现思路方法参数既可以声明为类也可以声明为接口如果是接口实现接口类就可以作为参数传入思路方法JAVA中文站社区门户t1V-t(MyYE h
  接口概念要比多继承容易理解但是他有局限性特别地你必须在类中实现接口时候编码去重新实现类功能JAVA中文站社区门户%s |HV'HD
Java支持多线程JAVA中文站社区门户T*RPYM;c;n8B iy+Z
  多线程可以使你写出在同时刻完成多种任务比如说你可以在完成读取个大文件的间允许用户对已经读取部分进行编辑你需要把分为多线程来执行为安全起见要被精心设计可能不止个线程需要对数据进行访问、修改JAVA中文站社区门户m7x Aq1k(cz,n
  Java开始就支持多线程类和接口用来分解成为区别线程语言简单对重要数据作同步或者锁定处理JAVA中文站社区门户n-VzX W3EU
Java以些预定义类为基础JAVA中文站社区门户.mb3y@0THA
  默认Java环境中包括些从Java基础类实现而来些包这些允许你很快写出些有用这些包如下:JAVA中文站社区门户yegS7IAqcF
  java.awt:当今许多应用都非常依赖GUI,java提供了个Abstract Window Toolkid这可以让你在不考虑运行平台前提下处理GUI对象
Z)a+t'v#E E3BO Qj  java.applet:applet主要目是提供浏览有关内容它本身是awt组件字类并且支持其他些特性比如声音、渲染等
,YNiO}X  java.io:java.io提供了对流、文件、管道读写操作
4_#_-iAh7I  java.lang:提供了java基础类Objcet,Integar,Float……;
S;{2z+S(D5x  java.net:提供对网络编程支持包括处理,URL,Internet寻址等JAVA中文站社区门户 qjJn&qD5FNN5l
  java.util:为数据结构提供通用实用工具集
Eh6lKXPM JAVA中文站社区门户q4@/J;Ey o



TAG: Java JAVA java 关键 面向对象
Tags:  对面向对象的理解 java面向对象的特征 java面向对象 java面向对象编程

延伸阅读

最新评论

发表评论