Java不支持操作符重载。操作符重载被认为是c的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。
Java语言不支持操作符重载是为了保持Java语言尽可能简单。 C中使用操作符重载主要是可以使你的程序看起来更为自然。
如下面是一个程序自定义的复数类:
C中自定义的复数类及
0pemtor Overloading class Complex
{ public: Complex(double real,double image)
{
Real_number=real; Image_number=image;
} Complex operator(Complex&rhs)
{
Return Complex(rhs.real_numberreal_number,rhs.image_numberimage_,nulnbef);
}
private:
doublereal_number 实部
doublejmage_nunmber; 虚部
}
在这里,如果你使用来作为复数的加法符号,大家都不会有疑义,但是如果你使用的是*或》这样的符号,那么别人看到你的程序之后,难保不会产生认识上的错误。这也是Operator Overloading一大问题,当大家都对运算符赋予自己的定义后,整个程序的可读性就会大受影响。Operator Overloading的存在并不是必要的,我们一样可以定义类中的方法来达到同样的目的.
(36) 通过事先的约定,C中经常出现的const问题在Java里已得到了控制。
我们只能传递指向对象的句柄,本地副本永远不会为我们自动生成。若希望使用类C按传递那样的技术,可调用clone(),生成自变量的一个本地副 本(尽管clone()的设计依然尚显粗糙)。根本不存在被自动调用的副本构建器。为创建一个编译期的常数,可象下面这样编码:
static finalint = 255
static finalint B = 8 *
(37) 由于安全方面的原因,“应用程序”的编程与“程序片”的编程之间存在着显著的差异。 一个最明显的问题是程序片不允许我们进行磁盘的写操作,因为这样做会造成从远程站点下载的、不明来历的程序可能胡乱改写我们的磁盘。随着Java 1.1对数字签名技术的引用,这一情况已有所改观。根据数字签名,我们可确切知道一个程序片的全部作者,并验证他们是否已获得授权。Java 1.2会进一步增强程序片的能力。
(38) 由于Java在某些场合可能显得限制太多,所以有时不愿用它执行象直接访问硬件这样的重要任务。
Java解决这个问题的方案是“固有方法”,允许我们调用由其他语言写成的函数(目前只支持C和C)。这样一来,我们就肯定能够解决与平台有关的问题(采用一种不可移植的形式,但那些代码随后会被隔离起来)。程序片不能调用固有方法,只有应用程序才可以。
(39) Java提供对注释文档的内建支持,所以源码文件也可以包含它们自己的文档。
通过一个单独的程序,这些文档信息可以提取出来,并重新式化成HTML。这无疑是文档管理及应用的极大进步。
(40) Java包含了一些标准库,用于完成特定的任务。
C则依靠一些非标准的、由其他厂商提供的库。这些任务包括(或不久就要包括):
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-58491-12.html
别再浪费国家资源
那苏联人死两千万人