C/C++、JAVA、C#之间的关系和区别?

原创 2017年09月06日 17:26:07
  虽然它们不是一种语言,不过它们却也有所联系。广泛地说,C可以看作其他三种语言的源语言,因为其他三种语言几乎都是从C而来的,无论从数据类型还是控制语句看,其他三种语言都有从C得来的迹象。

其中C++则一般看作是对C语言的扩展。

  因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为C添加了面向对象的结构。现在C++已经不只是C的扩展了,它已经完全可以被看作一种新的编程语言。虽然C的特性以及库函数仍然被C++支持,不过C++拥有自己的独立的类库体系,功能相当强大。

Java语言是一种完全的面向对象语言,虽然它的底层(运行时库)是用C语言开发的,可是并不依赖于C。

  因为Java的运行是在运行时库的支持下进行的,所以运行效率比起可以更接近底层的C/C++来说效率会有所影响,不过Java的类库采用很好的设计理念设计,非常好用,也非常实用,已经成为业界的一种标准开发语言。它的跨平台的特性尤其让很多开 发者欢迎,你只需要开发一次就能在所有安装了Java运行时库的系统上运行。Java发展了十几年了,可以应用领域非常之广泛,Web开发有 JSP,J2EE,桌面领域现在有JavaFX。

C#是微软开发的一种编程语言,语法类似Java,几乎就是从Java的翻版。

运行原理和Java也类似,也是通过运行时库的支持运行。不过支持的平台还很有限。Java几乎被所有平台支持,而C#目前只被Windows和Linux支持,Windows下的支持当然是由微软自己开发的,而Linux下的支持则有MONO支持。实际上,MONO也是把C#应用转化为Java应用而已,所以本质上,C#仍然只是被微软自己的操作系统支持。应用平台受到限制,是它最大的缺点。

Java是c++的简化

  (1)C++中子类对父类的继承有三种不同的形式,默认的是私有继承,也就是说父类的所有内容,除了私有的之外,都变成子类的私有成员。保护继承是说,子类的公开的和保护的成员,在子类中变成了保护的,而公有继承是,父类的共有成员,在子类中还是公有的,而保护的,在子类中保持保护。这是c++中的情景。继承的一个好处就是代码的复用,是在c++中,因为继承默认的是私有继承,那么我们就不能在子类中使用父类的代码,这就限制了面向对象的特性。在Java中对此作了改进。Java中不在对继承进行控制,但是使用c++中的公共继承效果,这样我们就可以省掉在继承时对关键字public的添加,方便了编程。也方便了对代码的重用。
  (2)C++使用纯虚函数的概念来进行抽象类声明。而在Java中,也有相应的语法,但是这里使用virtual关键值,因为是抽象的类,所以,在Java中,使用的关键字abstract(抽象)。只要在类的生命有,只有方法头而没有方法的具体实现的类都是抽象类。这样,如果我们想生命一个抽象类,那么我们只要不实现这个类的实现就可以了,而不用专门在声明它是抽象的。但是在c++中,因为允许类的声明和类的实现分离(类的生命放在一个文件里,而类的实现放在另外一个文件里,或者即使在一个文件里,但是类的成员函数的实现,也不是在类的声明体里),所以,在c++中必须明确的说明这是个纯虚的函数,而不能像Java中那样仅仅不实现它来表示它是个纯虚的。

  (3)还有一点就是,在c++中我们访问对象的成员的时候使用->比较多,而在Java中,我们使用点(.)来表示。这是因为在c++中我们有指针的概念,而在Java中,去掉了这个概念。因为要实现类层面的多态,我们要使用父类的指针,所以,在c++中,往往使用->,而在Java中,使用一个“.”就可以完成同样的事情。一个需要两个按键,而另一个只需要一个就可以。这对于程序员这样一群抱有使用最少的代码解决问题的观念的人来说,这是个不小的改进。

Java:无可争辩地具有C++所有的精华

  在比较Java和C#的时候,你不可能不注意到它们诸多的相似之处,这在某种程度上要归结于它们共同的来源:C和C++。但是,当Gosling和他的同事们坐下来创造Java的时候,他们不仅吸取了C++的能力,而且更重要的是,他们减掉了一些无用特性,后者让C++更容易出错误而且更难学习。C#的设计者加入了很多C++的特性,而Java也加入了这些特性,但是C#却没有去掉C++的最糟糕的一些特性。其结果就是这样一门语言,它仍然为所有人提供了所有的特性,但其结局是内部冲突不断,而且过于复杂。

C#在安全上的削弱

C#有一个用于将代码区域标示为不安全的简单机制。在这些不安全的区域里,Java以及后来的C#安排到位了一些安全措施,用以防止程序员直接修改内存位置,以及使用点
运算,但是这些措施是值得怀疑的。在使用具有垃圾清理功能的高级语言时,如果下到内存地址这一层,就会把对象/内存之间有意作出分离弄混。错误就会容易出现,调
试成了恶梦,缓冲区溢出再次抬头,C和C++里著名的安全漏洞再次现身。

一些论坛说法:

>什么垃圾理论。C#怎么是抄袭JAVA了。
C#抄袭Java是有目共睹,微软自己都承认,只不过改成中性词语:继承和吸取。这个基本历史都会怀疑,如何和这样的程序员沟通?
>java的速度太慢了.而C#的速度非常快,而且他的特性和java,几乎没有什么区别.我就是把C#当一个速度很快的java用.
版权声明:本文为博主原创文章,未经博主允许不得转载。

C,C++,C#,java的区别

转载连接:点击打开链接 C,C++,C#,java的区别    简单地说,它们不是一种语言,语法有差别,编程时具体用到的类库或者函数库也不一样。   虽然它们不是一种语言,不过...

比较C#与C++、Java的异同

最近正在看C#视频,但是感觉效率很低,还是停下脚步总结一下、思考一下吧!         开始接触C#,我们都会有一个疑问:C#和C++有什么区别呢?学过Java的同学会想C#和Java有什么区别呢...

C++,C#,VC,VC.net,java以及VC++有什么区别和联系?

C++ C# VC VC.net以及VC++有什么区别和联系?(2007-04-25 09:27:56)转载   C/C++是编程语言,C是C++的爸爸,也就是说C++从C发展而来,而C++完全兼容...
  • sac761
  • sac761
  • 2016年09月27日 11:22
  • 1856

我们应该学习什么java、C#还是C++(VC)?

此文仅代表个人观点     很多学员有这样的问题:我们应该学习什么语言,java、C#还是c++?好像很多公司都找会VC的人,java和C#有用吗?甚至有人说java或C#是小公司用的语言,C++是...
  • ttwwok
  • ttwwok
  • 2014年04月22日 10:47
  • 1308

C,C++,C#三者区别

C,C++,C#三者区别 继承关系是C->C++->C# C++完全向C兼容,C程序几乎不用修改即可在C++的编译器上运行.C++也称为带类的C,在C的基础上增加了许多面向对象的概念.虽然是C的扩...

摩拜单车的工作原理

最近一段时间比较火的应该就是共享单车了。我之前也试着骑了摩拜单车,很好用,简单方便。 它的特点就是扫码既用。用完放在路边锁上即可,而且计费也非常方便。它的特点就不多说,本文的重点不在于此。 那么大...

java基础-- 集合框架入门 及 List集合

一、集合概述   1、为什么出现集合?     面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象进行操作,就对对象进行存储,集合就是存储对象最常用的一种方式。   2、数...

浅析java、C#、C++及VC之间关系

  • 2013年03月10日 11:03
  • 152KB
  • 下载

java 与 c++ 、 C# 之间的区别与联系

JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对...

C++/C/JAVA/Python之间的区别?

这四者都是通用编程语言: python: 快速开发应用程序 java: 健壮的大型软件 C++: 需求效率的软件 C: 操作系统及驱动 python比较容易学习,语法很简单,融入了很多现...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++、JAVA、C#之间的关系和区别?
举报原因:
原因补充:

(最多只允许输入30个字)