Java限制了常量对象和方法
在C++中,你可以正式的声明一个函数参数或者函数返回值为const类型,这样可以有效的防止对参数或者返回值的不正当修改。另外,你可以声明一个成员函数为const,表明它不可以修改任何他操作的对象。
Java支持常量操作符,只读变量,这些通过final关键字实现。但是Java没有支持强制的使一个可写变量在函数传递、返回的过程中变为只读。或者定义一个不操作修改对象的常量方法。
在Java中,这个省略带来的影响和在C++中相比就非常小了,这很大程度上因为字符串变量和字符数组的不同,但是这也带来一个引起错误的隐患。特别地,没有办法检验一个方法是否可以改动对象。
Java没有指针
理解指针的概念是一个C或C++程序员最难应付的问题。指针也是错误产生的一大根源。Java中没有指针,对象的句柄直接作为参数传递,而不是传递指针。另外,你必须通过索引使用数组。这些都不是什么大问题。然而,没有指针是在写含有函数指针或者成员函数指针的系统的时候引起很大麻烦。这个问题在处理回调函数的时候更加显著。
Java没有参数化类型
参数化类型提供了用一段程序处理许多相似程序的方法。一个例子就是开平方根的方法,它可以对int或者float操作。在C++中,这一特性是由模板提供的。
Java中不包含C++中的模板的等价物。如果你经常使用模板来简化程序,比如说构造许多使用相似参数类型的函数,这简直就是灾难。这意味着更多使用复制、粘贴的过程来手动的完成。然而,如果你使用模板来生成类的话,没有简单的方法。 |