Java与C++比较
2010-03-17 09:26
246 查看
Java 偏应用层, C++ 偏低层
OOP 的三大精神 --------- 封装,继承,多态。
1 . Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的。
2. C++ 中有拷贝构造函数,可以把一个对象的属性 copy 到另一个对象里 , 也叫对象赋值,而 Java 是用 Clone 实现的。
3. Java 的世界是 Object 世界(除了基本类型),对象之间的关系是 Reference 的,象
C++ 中的指针,我们叫他句柄。
在 C++ 中对象之间是可以直接赋值的!在 Java 中只是句柄和句柄之间的转换! Java 和 C++ 都有 this, 在
C++ 中 this 表示指针,而在 Java 我们叫他引用。但在用法上大同小异。
4. C++ 中有所谓的析够函数,而 Java 中也有一个类似的东西叫做 finalize, 是 Object 类的一个方法, 但 Java
中有个很好的东东就是自动回收机制。而 C++ 中你 new 的东西不 delete 的话是不会自动清理内存的,所以 Java 要省事些啊 !
5 . C++ 的函数有个默认的概念,在 Java 中是没有的。
6. static 关键字 , C++ 和 Java 中意思基本相同, C++ 中 static 变量必须在类外初始化。
7. C++ 中的对象成员要在本类的构造函数之前构建,而 Java 没有这个规则, Java 的对象和普通变量一样简单。
8. C++ 有个常量修饰符 const, 而 Java 中一个常量一般是用 static + final 等价实现。
9 . C++ 的每个类都有个分号结尾。
10 . Java 有个很好的东西叫包,使得全世界的类不会发生冲突。
在 C++ 也有一个类似的东西叫做作用域运算符 “ :: ” 表示,还有一个命名空间。
11 . Java 在子类的方法重载中要想调用父类的同名方法只要用 Super 关键字,
而在 C++ 中要用基类名 + 域运算符( :: )以达到同样的效果。
12. C++ 有多重继承,而在 Java 中只是单根继承,但是用 Java 的接口可以达到类似的效果。多重继承有二义性,但可用虚基类( virtual
)解决该问题。
13. Java 中的多态完全是继承的原因,而 C++ 除了继承又引入了虚基类和虚函数(实现了运行时多态性)的概念。
14. C++ 中声明了纯虚函数的类为抽象类,而在 Java 中有 abstract 声明的 Method (当然类也要用 abstract
修饰) 就是抽象类 , 在抽象类方面 Java 原自 C++, 即两者观念上是一致的。
15 . Java 中的对象全都是 new 出来的,而 C++ 不同,当然他也有 new 功能, Java 中理论上你可以随意 new Object, 他有
gc 这个对象管家,而 C++ new 的 Object 你一定要手动 delete 他。
16 . C++ 中有运算符重载 , Java 里只有 + 号有重载的意思,不过在 JDK5 中也有其他的运算符重载,比如两个类对象可以直接相加。 C++
可以将自定义类型强制转换为基本类型,如将一 Test 类的对象,强制转换为 int 类的对象,要达到这个效果就要用到 operator 关键字, Java 除了
8 大基本类型以外都是 OO 的,但 Java 也提供了基本类型的对应 Class 类型。
17 . C++ 中有模板的概念 ( 类模板,函数模板 ) ,在早期的 Java 版本 (1.4 之前 ) ,没有模板的概念,但 1.5
引入了范型,与模板的思想类似,这可是好东西。如果你看 Java 原码库,你会发现他变化的好大。
OOP 的三大精神 --------- 封装,继承,多态。
1 . Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的。
2. C++ 中有拷贝构造函数,可以把一个对象的属性 copy 到另一个对象里 , 也叫对象赋值,而 Java 是用 Clone 实现的。
3. Java 的世界是 Object 世界(除了基本类型),对象之间的关系是 Reference 的,象
C++ 中的指针,我们叫他句柄。
在 C++ 中对象之间是可以直接赋值的!在 Java 中只是句柄和句柄之间的转换! Java 和 C++ 都有 this, 在
C++ 中 this 表示指针,而在 Java 我们叫他引用。但在用法上大同小异。
4. C++ 中有所谓的析够函数,而 Java 中也有一个类似的东西叫做 finalize, 是 Object 类的一个方法, 但 Java
中有个很好的东东就是自动回收机制。而 C++ 中你 new 的东西不 delete 的话是不会自动清理内存的,所以 Java 要省事些啊 !
5 . C++ 的函数有个默认的概念,在 Java 中是没有的。
6. static 关键字 , C++ 和 Java 中意思基本相同, C++ 中 static 变量必须在类外初始化。
7. C++ 中的对象成员要在本类的构造函数之前构建,而 Java 没有这个规则, Java 的对象和普通变量一样简单。
8. C++ 有个常量修饰符 const, 而 Java 中一个常量一般是用 static + final 等价实现。
9 . C++ 的每个类都有个分号结尾。
10 . Java 有个很好的东西叫包,使得全世界的类不会发生冲突。
在 C++ 也有一个类似的东西叫做作用域运算符 “ :: ” 表示,还有一个命名空间。
11 . Java 在子类的方法重载中要想调用父类的同名方法只要用 Super 关键字,
而在 C++ 中要用基类名 + 域运算符( :: )以达到同样的效果。
12. C++ 有多重继承,而在 Java 中只是单根继承,但是用 Java 的接口可以达到类似的效果。多重继承有二义性,但可用虚基类( virtual
)解决该问题。
13. Java 中的多态完全是继承的原因,而 C++ 除了继承又引入了虚基类和虚函数(实现了运行时多态性)的概念。
14. C++ 中声明了纯虚函数的类为抽象类,而在 Java 中有 abstract 声明的 Method (当然类也要用 abstract
修饰) 就是抽象类 , 在抽象类方面 Java 原自 C++, 即两者观念上是一致的。
15 . Java 中的对象全都是 new 出来的,而 C++ 不同,当然他也有 new 功能, Java 中理论上你可以随意 new Object, 他有
gc 这个对象管家,而 C++ new 的 Object 你一定要手动 delete 他。
16 . C++ 中有运算符重载 , Java 里只有 + 号有重载的意思,不过在 JDK5 中也有其他的运算符重载,比如两个类对象可以直接相加。 C++
可以将自定义类型强制转换为基本类型,如将一 Test 类的对象,强制转换为 int 类的对象,要达到这个效果就要用到 operator 关键字, Java 除了
8 大基本类型以外都是 OO 的,但 Java 也提供了基本类型的对应 Class 类型。
17 . C++ 中有模板的概念 ( 类模板,函数模板 ) ,在早期的 Java 版本 (1.4 之前 ) ,没有模板的概念,但 1.5
引入了范型,与模板的思想类似,这可是好东西。如果你看 Java 原码库,你会发现他变化的好大。
相关文章推荐
- 比较Java和C++的访问控制语法
- c++动态绑定、静态绑定与java中动态绑定与静态绑定的比较
- 比较java与C++的不同
- java,c,c++ 语言之间基本数据类型的比较
- Java 与 c 及c++的比较
- c++fstream文件读写(与java的比较)
- Java学习笔记及其与C++的比较
- 比较C++和Java 一
- c++ 与java引用比较
- C# 与 C 、 C++ 、 D 、 Java 的性能比较(二)
- C++与Java基本数据类型比较
- Java 和 C/C++ 中的++的比较
- 排序算法比较---C++版和java版
- C++与Java比较
- 多态在 Java 和 C++ 编程语言中的实现比较
- 多态在 Java 和 C++ 编程语言中的实现比较
- 多态在 Java 和 C++ 编程语言中的实现比较
- C++与Java比较之向上转型
- Java与C++的异同比较[一]
- C++与Java比较