从C++到Java,第1张

从C++到Java,第2张

从C++到Java——理解面向对象是关键。

本文将提供这些概念的简明解释,而不是提供一些深入的或如何使用它们。请记住,这些只是基于我对Java的经验的一些主要差异。

运行在Java虚拟机上

Java源代码不编译成普通机器码。而是被翻译成虚拟机可以执行的代码。一个Java解释器最终执行这些代码。没有连接的过程;解释如何在需要的时候动态加载一些类;

Java是完全面向对象的。

Java是一种完全面向对象的语言。这意味着你对任何Java对象的操作都是通过一个方法来实现的。第一点是没有主函数这种孤立的东西。相反,你必须从一个对象的角度来看一个程序,一个类的对象。但是这个对象是什么对象呢?大多数Java程序只是简单地继承Java基类对象来实现它们需要的东西,但是您可以通过为具有相似特性的多个应用程序创建一个程序基类来节省时间。

严格的面向对象规定意味着原C/C++代码不能不加修改直接使用;系统调用也是如此。在C++中,通过在C++的正常命名空之外声明extern“C ”,可以使用原始的C过程调用,包括系统调用。

在Java中,只有类似的安全回溯的方法,但不是很简单的方法。你必须定义一个本地方法,目的是为C语言提供一个接口,然后提供连接媒介。Java环境提供了完成这个任务的工具,但是整个过程和C++中提供的extern相比微不足道,使用C++类的过程更复杂,因为会给C引入借口以及C函数和C++成员函数的问题。

幸运的是,系统类的方法中提供了许多常用的系统实用函数,但是这些函数显然不包含您多年来创建的那些类和过程。所以,你要在需要的时候去研究。

Java中没有独立的头文件。

在Java中,所有关于类的东西都放在一个单独的文件中。方法的位置只能出现在一个地方,方法的实现必须在定义过程中同时进行。这样做的好处是不容易因为文件的异步错误而失败或者在实现程序时得到一个没有实现的语句。类声明可以被Java解释器使用,甚至可以从编译过的单元中获得,所以不需要头文件,只要有编译过的文件就可以了。

这样做的缺点与我们的编程过程有关。许多C++程序员喜欢使用头文件而不是文档。要查看成员函数的接口参数,只需查看头文件中的声明。你可以经常阅读这些文件来学习如何使用这个类。在Java中,没有这样的总结。因为实现类方法的代码必须在方法定义的时候出现,而且往往一个函数代码就要占一整页甚至更多。这样,通过查看Java代码很难初步了解类是如何使用的。你必须为你需要的课程准备足够的文件。不言而喻,在处理非商业类库时,文档是极其匮乏的。

在领先的Java环境中,提供了两个工具来弥补这一点。javap打印类标识,javadoc为嵌入式程序提供HTML文档。

用包分解Java命名空。

大型C++项目中经常遇到的一个问题就是命名空-如何保证项目中的一些程序员不会创建和其他人同名的类?更糟糕的是,供应商可能会提供一个包含与您同名的类的库。解决这个问题的方法有很多,但是很可能在发现问题之前就已经开始项目了,纠正错误需要很大的痛苦。

Java通过“包”的概念解决了这个问题,有效地将命名空按集合类划分。不同包中两个同名的类还是不一样的。关键问题是类是否放在相应的包中。

记住,Java并没有解决命名冲突的问题。扩展基类导致了派生类之间的冲突。举个例子,如果你喜欢的供应商提供了一些类,然后你把它们作为基类,用foo方法派生了一个类,可能会在供应商提供新版本的类时出现,如果供应商业务在新类中也提供了foo方法。

异常是Java的一个重要特性。

在C++中,异常和异常处理是很深奥的东西;很多C++程序员从来没有和它们打过交道,甚至不知道它们是什么。异常是正常过程中发生的意外错误,因此不会从方法中返回,也不会作为参数传入;但是,他们是不可忽视的!这里的一个例子是计算书的根的方法。正常的接口形式是将一个正数作为参数传入方法,然后方法将返回一个正实数作为结果。该方法可以检查这些,并在发生异常时引发异常。在大多数系统中,程序员不必这样做,所以一个意外的异常会使程序异常退出。

在Java中,异常已经成为语言中非常成熟的一部分。方法的描述包含异常的信息,程序处理器也执行测试。如果使用可以生成异常的方法,则必须检查异常是否发生。几乎所有的Java程序员都会遇到异常,因为很多非常有用的库中的类都会抛出异常。处理异常并不难,但在某些情况下需要注意。方法的文档指示该方法引发的异常的类型。如果你忘记了,没关系,编译器会提醒你的。

字符串不再是字符数组。

Java包含一个字符串对象,是一个常量。字符串不同于字符数组,尽管它可以简单地由字符数组构造而成。你应该尽可能用字符串替换字符数组,因为它们不会被误操作覆盖。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 从C++到Java

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情