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

面向对象彻底性

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

编程语言的面向对象级别

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

相关推荐
码匠许师傅22 分钟前
【C++ 面试真题】聊聊 volatile 和 mutable
开发语言·c++·面试
ChaHae-In24 分钟前
MyBatis入门操作
java·mybatis
xcLeigh30 分钟前
Go入门:短变量声明的陷阱与最佳实践
java·redis·golang·教程·变量
(Charon)31 分钟前
【C++】线程安全队列(二):生产者消费者模型与 condition_variable 阻塞等待
c语言·开发语言·c++
青山木36 分钟前
Hot 100 --- 最小栈
java·数据结构·算法·leetcode
疯狂打码的少年39 分钟前
【数据结构】栈的应用:表达式求值(后缀表达式)
java·数据结构·笔记·算法
szephyr44 分钟前
腾讯云 ADP 智能体的 Skills 版本回滚总是回到旧配置,是缓存没清还是版本管理没开?
java·缓存·腾讯云
云烟成雨TD1 小时前
Micrometer 系列【39】链路追踪:入门案例 | 环境准备
java·云原生·链路追踪
chuan.bai1 小时前
Java RAG 实战(第 3 篇):从交互式聊天到多轮上下文
java·人工智能·macos·ai
952361 小时前
Sentinel
java·后端·spring·sentinel·springcloud