看了几天的JAVA.在对象的容器中的那一部分时有这样的感想.
有些类的使用方法非常类似C++的类函数.如:ActionListener等使用起来感觉很爽.但是...
JAVA对在运行时实现类的对象没有C++那么灵活.给我的感觉是JAVA根本就没有实现泛型编程(Generic Programming)这个概念. 举个例子:
Java
int max(int [] obj,int length) {
int i,result;
result=obj[0];
for(i=1;i<length;i++) {
if(result<obj[i])result=obj[i];
}
return result;
}
float max(float [] obj,int length) {
int i;
float result;
result=obj[0];
for(i=1;i<length;i++) {
if(result<obj[i])result=obj[i];
}
return result;
}
但是用STL就可以这样简单的实现了.C++
template<class T>
T max(T obj[],int length) {
int i;
T result;
result=obj[0];
for(i=1;i<length;i++) {
if(result<obj[i])
result=obj[i];
}
return result;
}
java的那段程序只实现了int和float类的获得最大值的功能.
而且还要人工编写了2次代码.而C++那段代码就用1次代码编写.
就实现了任何重载了比较大小和赋值("<"和"=")2个操作符的类
的相同功能都实现了.关于JAVA中的ArrayList好像是实现了泛型的概念.但是继续看下去才发现 这也是一个"伪泛型"工具.因为这个类定义的参数是Object.而JAVA中定义 类的时候如果没有指定继承的父类缺省是继承了Object这个最基本的基类.
在我印象中,面向对象的编程中,泛型编程是不可分割的一部分(这是我自己 主观认为的).难道JAVA就把OOP实现到这一步吗?
No comments:
Post a Comment