java和c语言的区别_C/C++编程笔记:C++面向对象和Java面向对象的区别

C++与Java都是面向对象的编程语言,同样是面向对面编程,那他们的不同之处今天我们就来看一看吧!

cd152777c57a61614dcebc75b36dad79.png

引用:

java和c++都有引用的概念,但两者是完全不同的东西,c++的引用是变量的一个别名,引用一旦绑定就不能重新引用其他变量,c++引用也不能为null。java引用更像c++的指针,对引用赋值是重新绑定引用的对象(在c++里面是改变对象的值),引用可以为null(导致了烦人的NPE问题,万恶之源)

类型系统:

java区分值类型与引用类型,用户自定义类型都是引用类型,值类型和引用类型在很多地方不能混用(如泛型参数),c++没有值类型和引用类型的概念,类似的概念是普通类和它的指针类型。

java有根基类Object,c++没有根基类。

debe87f015e2ab5c8efb5c08c587d525.png

访问控制:

都有public,protected,private三级访问控制

此外,java还有包访问控制,c++有友元

继承:

c++分public继承,protected继承(意义不明)和private继承(基本和组合没啥区别),java只有public继承。

c++只能覆盖基类中显式定义的虚函数,java中方法默认是虚的,除非显式标明final

c++支持多重继承,java只支持单继承,但支持实现多个接口(c++没有语法层面上的接口)

a078b90e0786a13d20b76db503bb2091.png

构造与析构:

对象构造大致相同,但是c++在构造函数中调用虚函数无法多态(因为对象的子类部分还没构造)

c++可以定义析构函数,java没有析构函数(java提供一个终结方法,但它和析构函数不是等价的)

对象生命周期控制:

c++主要靠手动申请,释放内存或者借助析构函数(RAII技术),java依靠gc

异常处理:

c++没有也不需要finally块,释放资源依靠析构函数就行了。

4330cd77f6d2f6aaf6a6ed8b77e66419.png

泛型:

c++模板采用代码生成技术,运行时能够保留类型信息,java采用类型擦除,类型信息在运行时就没了(所以其实只是进行安全的自动类型转换而已……)。c++模板参数可以是基本类型,用户自定义类型和整型常量,java只能是引用类型。c++还可以对模板进行特化,java没有这个功能。

其他:

c++有运算符重载,java没有(除了String类重载了+)

通过这篇文章,大家对于C++与Java的面向对象的不同知道了多少呢?记不住的小伙伴可以收藏一下,希望对大家有帮助哦~

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!

编程学习书籍分享:

47b58cea9f6c30cd594451d0a03e6c8e.png

编程学习视频分享:

75fb48cc2797389379b60aaaba4793b0.png

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

C语言C++编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助自己成长进步哟~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值