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

面向对象彻底性

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

编程语言的面向对象级别

  • 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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
Rain的Java大神之路20 分钟前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
counting money38 分钟前
Tomcat 专题:从基础架构到性能调优与 WebSocket 实战
java·websocket·tomcat
间歇性努力持续性发呆的野生快乐选手1 小时前
栈的性质(进栈,出栈,访问)
数据结构·c++
xiaohaiAIgeo1 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
旖旎夜光1 小时前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
小强库计算机毕业设计2 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质2 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军2 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐2 小时前
maven部分构建参数讲解
java·maven
ZC跨境爬虫2 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode