面向对象彻底性、权限访问、垃圾回收

面向对象彻底性

历史的潮流不断告诉我们,没有什么可以一步到位,如果是,那大概率是发生了极大的事件,比如小行星撞地球。

编程语言的面向对象级别

  • C++比较折中,因为它需要尽可能兼容C语言。C++既允许值类型对象,也允许纯对象类型,放入堆栈还是堆,根据程序员的选择。这提供了极大的自由度,控制感非常舒服。

  • Java不允许对象类型放在栈中,所有非基本类型都必然的堆对象。

权限访问

社会本身就有限制和权限,在公网写博客是public, 不管是公司还是其他任何人都可以看。为本部门写的代码对本部门可能是public,其他部门是protected, 外部是private. 间谍战写了一些不可告人的代码,这是private.

main函数的权限

  • 一般而言main函数是public, 对于C语言,无public和private概念,就当做是public.

  • C#允许不是public, 甚至可以是private, 但如果外部显式调用,需要是public.

  • Java的Main函数必须是public, 否则,可以编译通过,运行时会提示找不到main方法。

垃圾回收

在计算机世界,尤其是用指针的大型工程,内存申请和释放可能是灾难。虽然内存很重要,申请可能不太会犯错,但做到正确释放会让你把头发抓完。这也许是为什么程序员把重要的内存说成垃圾的原因,也许只有这样才能让自己好受一些。

垃圾回收的支持

  • ObjC提供@autoreleasepool ARC机制,可轻松释放pool中不用的内存。

  • C++语言级别没有直接支持垃圾回收机制,用智能指针做支持。

  • Java/C#都有垃圾回收,垃圾回收方便有效,不用程序员参与,写代码溜得飞起,一问发生了什么问题,可能就是内存爆了,内存爆了怪谁,怪机器呗,加内存条! 成功把内存问题和自己脱钩~

  • 但并非所有的资源都是自动释放,比如和操作系统息息相关的文件、句柄资源,任何编程语言都没有足够的把握去自动回收,这些资源依然要求程序员写代码显式释放,比如Java的finalize函数和C#的Dispose.


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
Murphy_lx11 小时前
C++ thread类
开发语言·c++
月夜的风吹雨11 小时前
【C++ STL 深度剖析】:vector 底层模拟实现与核心陷阱解析
c++·vector·类和对象·visual studio
彩妙不是菜喵11 小时前
C++ 中 nullptr 的使用与实践:从陷阱到最佳实践
开发语言·jvm·c++
L.EscaRC11 小时前
Spring Boot 自定义组件深度解析
java·spring boot·后端
pengzhuofan11 小时前
IntelliJ IDEA 常用快捷键
java·ide·intellij-idea
ANGLAL11 小时前
17.MyBatis动态SQL语法整理
java·sql·mybatis
SheepHappy11 小时前
MyBatis-Plus 源码阅读(二)代码生成器原理深度剖析
java·源码阅读
雨白12 小时前
重识 Java IO、NIO 与 OkIO
android·java
light_in_hand12 小时前
内存区域划分——垃圾回收
java·jvm·算法
金銀銅鐵12 小时前
[Java] JDK 9 新变化之 Convenience Factory Methods for Collections
java·后端