查看: 1622|回复: 7
收起左侧

[讨论] 狂热的c++分子对JAVA的初印象

[复制链接]
JY-YZX714
发表于 2009-7-12 18:46:02 | 显示全部楼层 |阅读模式
不知什么原因,自己是一名天生的c++狂热分子,没有学习c就学习c++、头脑完全就是c++思维……
还记得年初买了一本JAVA书,当时就想看看,但不久就放弃了……
昨天晚上觉得自己还是该学学其他语言,就在一个角落找到了那本JAVA书,擦掉灰尘,清理血迹,带着手套,关掉房门,关窗子拉窗帘,准备学习一下
一口气把书看了一大半感觉很容易,看到了异常处理,在JAVA身上我当然看到了C++的影子,但也有很多不同于c++的地方让我不太适应
首先便是定义变量或者对象的格式,c++直接就是XXX a;而java必需XXX a=new XXX;感觉非常麻烦和不实用,要是忘记了new岂不是不明确行为???
第二就是JAVA的继承,我在教科书上看到JAVA子类直接定义了从父类继承的public函数,当即就直接用effective c++来反驳——子类public继承时不应该重写父类的public函数!后来用黑莓上网查查才发现JAVA自动实现了虚函数并且JAVA根本就不分什么形式的继承……于是我又有了疑问,虚函数的实现需要一个vptr,JAVA默认为每个类实现vptr不是会浪费很多空间?这个问题至今没有搞懂,知道的帮忙下
第三就是JAVA声明类的奇怪啊,怎么有时要在声明类时前面加访问修饰符啊,声明类和public和private有什么关系啊?这个也没搞懂
第四是JAVA声明类时怎么每个函数都必须加上访问修饰符啊,多麻烦,直接像c++那样不好吗??并且如果忘记加访问修饰符了就默认变成friend,那么岂不是容易破坏封装?
总的来说,JAVA给我的感觉还是不错,作为一个C++-LIKE语言,我今后在小的GUI项目上可能会选择它,但如果大项目我肯定还是选择C++,STL不是一般的方便啊~
炫耀一下c++的STL,一家独有,别处无求!
非正规ID
发表于 2009-7-12 19:47:07 | 显示全部楼层
java new XXX a 是一个对象进行实例化  如果不new的话是 那就先声明一个static的对象 不过要声明static要取决于它们只能访问static数据和调用其他的static的方法。
C++ 可以多重继承 java就不能了 一个子类只能继承一个父类 就想一个儿子只能有一个亲爹   但java可以利用接口啊 接口可以说能代替继承 接口可以实现多个的
public 是公共的 所用成员都可以来用  private 是私有 只能在自己这个class理用了
java默认是public的吧 都可以访问的  破坏封装到没怎么注意  
WEB方面项目还是java方便些吧 不过C++的猛人其他语言基本都可以通吃啊
L.S.
发表于 2009-7-12 21:02:49 | 显示全部楼层
那个new的问题,估计楼主还没学通C++。
JY-YZX714
 楼主| 发表于 2009-7-12 21:10:59 | 显示全部楼层
原帖由 L.S. 于 2009-7-12 21:02 发表
那个new的问题,估计楼主还没学通C++。
只是抱怨一下比较麻烦不简洁,怎么说我不懂C++,话说我最骄傲的就是c++
sse
头像被屏蔽
发表于 2009-7-12 21:13:49 | 显示全部楼层
我喜欢C Sharp
JY-YZX714
 楼主| 发表于 2009-7-12 21:16:34 | 显示全部楼层
在C++中,new操作符返回一个指针,指向新划出的内存
所以我们会这样使用XXX* A=new XXX
但是我们仅仅XXX A得到基本上也差不多,只不过使用new我们得到的是一个指针,指向建立的变量,而不用new得到就是一个变量
但在JAVA中,已经没有指针了,XXX A声明的是个XXX的引用,new返回的是才个化出的内存!
JY-YZX714
 楼主| 发表于 2009-7-12 21:19:47 | 显示全部楼层
原帖由 非正规ID 于 2009-7-12 19:47 发表
java new XXX a 是一个对象进行实例化  如果不new的话是 那就先声明一个static的对象 不过要声明static要取决于它们只能访问static数据和调用其他的static的方法。
C++ 可以多重继承 java就不能了 一个子类只能继承 ...
JAVA使用接口是因为接口定义的方法是虚方法(???),同名的话保留那一份都是一样的,而直接多重继承则不知道该保留那一个函数,调用会产生歧义
我对JAVA的每次都要写public只是有点反感,比较麻烦,没有其他意思
非正规ID
发表于 2009-7-12 22:18:16 | 显示全部楼层
恩  接口是声明一个空方法 抽象的不能在抽象了 = =  看你在不同的地方去具体怎么去实现这个接口的方法了
C++ 的多重继承和java继承有什么区别 我也不明白 C++只知道一点点  合理利用接口无比的爽 可惜我不太会
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-11 21:07 , Processed in 0.123042 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表