阅读笔记04

第1章 对象导论
1.1 伴随多态的可互换对象
  面向对象程序设计语言使用了后期绑定的概念。当向对象发送消息时,被调用的代码直到运行时才能确定。也叫动态绑定。
  编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查(Java是强类型的语言,无法提供此类保证的语言被称为是弱类型的),但是并不知道将被执行的确切代码。
  在某些语言中,必须明确地声明希望某个方法具备后期绑定属性所带来的灵活性(C++是使用virtual关键字来实现的)。在这些语言中,方法在默认情况下不是动态绑定的。而在Java中,动态绑定是默认行为(Java中除了static方法、final方法和private方法之外,其它所有方法都是动态绑定),不需要添加额外的关键字来实现多态。
  把将导出类看做是它的基类的过程称为向上转型(upcasting)

1.2 单根继承结构
  在Java中(事实上还包括除C++以外的所有OOP语言),所有的类最终都继承自单一的基类,这个终极基类的名字就是Object。
  单根继承结构的好处:

在单根继承结构中所有对象都具有一个共用接口,所以它们归根到底都是相同的基本类型。
单根继承结构保证所有对象都具备某些功能。
单根继承结构使垃圾回收器的实现变得容易得多,而垃圾回收器正是相对C++的重要改进之一。由于所有对象都保证具有其类型信息,因此不会因无法确定对象的类型而陷入僵尸。这对于系统级操作(如异常处理)显得尤其重要,并且给编程带来了更大的灵活性。
1.3 对象的创建和生命期
对象的数据位于何处(作用域):
将对象置于堆栈(它们有时被称为自动变量(automatic variable)或限域变量(scoped variable))或静态存储区域内来实现。这种方式将存储空间分配和释放置于优先考虑的位置,某些情况下这样控制非常有价值。但是,也牺牲了灵活性。
第二种方式是在被称为堆(heap)的内存池中动态地创建对象。在这种方式中,直到运行时才知道需要多少对象,它们的生命周期如何,以及它们的具体类型是什么。
  Java完全采用了动态内存分配方式(基本类型只是一种特例)。每当想要创建对象时,就要使用new关键字来构建对象的动态实例。

对象的生命周期:
Java的垃圾回收器被设计用来处理内存释放问题。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/leonliu06/article/details/78638841

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865126.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RAG项目推荐:bRAG-langchain-构建自己的 RAG 应用程序所需了解的一切

检索增强生成 (RAG) 项目项目链接:https://github.com/bRAGAI/bRAG-langchain/tree/mainbRAGAI 的官方平台即将上线。加入等待列表,成为早期使用者之一! 本仓库包含了对检索增强生成 (RAG) 在各种应用中的全面探索。 每个笔记本都提供了从入门级到高级实现的详细实践指南,包…

五上数学LK情况反馈203班

五上数学LK情况反馈203班 上周五进行了LK,使用答题卡,电子阅卷,答题卡放在中学部,我们只有拿着学生没有写答案的试卷讲评,需要知道具体错误的,由周老师告知学生,今天晚上有半数以上学生,周老师已经告知学生错误题目了,分数已经公布。 本次考试难度较大,带有XB的性质,…

【金融行业】2024中国网络安全产业势能榜优能企业 金融行业典型案例展示

金融行业一直是信息安全的重点领域,随着金融科技的快速发展和数字货币的崛起,金融机构面临着前所未有的挑战。数据泄露、网络攻击等安全事件的频发,促使金融企业加强安全保障。然而,信息安全的提高不仅仅是防止外部威胁的关键,更重要的是确保业务在突发事件或安全事件发生…

Timer、Ticker使用及其注意事项

在 Golang 中,Timer 和 Ticker 是常用的定时器工具,但它们的使用易出错,尤其是初学者。本文将深入探讨定时器的正确使用方式、常见误区,并通过源码解读帮助你更好地理解它们的工作原理。Timer、Ticker使用及其注意事项 在刚开始学习golang语言的时候就听说Timer、Ticker的使…

entire vs whole; coca

entire 868 whole 466left 4WORD 1: ENTIRE WORD W1 W2 AN 15134 932 VIRTUALLY 354 71 Virtually the entire sample几乎所有样本 Virtually the entire Israeli governing class几乎整个以色列统治阶级 DEVOTED 216 71 devoted his entire care…

第22章 高级线程处理

第22章 高级线程处理 22.1 同步概述 多线程我们常需要一些同步结构进行线程间通讯。同步结构可以分为三类:互斥锁一次只允许一个线程执行特定的活动或一段代码。主要目的是令线程访问共享的写状态而不互相影响。互斥锁包括 lock​、Mutex​ 和 SpinLock​。 2. 非互斥锁 实现…

DINO-X环境搭建推理测试

​引子 开放世界检测,前文也写OV-DINO(感兴趣的童鞋,请移步OV-DINO开放词检测环境安装与推理-CSDN博客)。这不,DINO系列又更新了。OK,那就让我们开始吧。 一、模型介绍 IDEA 开发了一个通用物体提示来支持无提示的开放世界检测,从而无需用户提供任何提示即可检测图像中…

一文说透汇编语言中的各种地址

本文讨论了学习汇编语言时一些易混淆的、关于地址的概念前言 由于笔者水平有限,随笔中难免有些许纰漏和错误,希望广大读者能指正。 一、各种地址之间的区分 笔者在刚开始学习汇编语言时,不是很能分清楚汇编地址、逻辑地址、物理地址、段地址、偏移地址、线性地址等概念,这对…

什么是自动化测试?为什么要做自动化测试?如何学习自动化测试?

自动化测试是指使用软件工具和脚本来执行测试任务的过程。它可以自动化执行测试用例、生成测试报告和进行结果分析。自动化测试可以减少人工测试的工作量,并提高测试的效率和准确性。它在软件开发过程中起到了重要的作用,可以帮助开发团队快速发现和修复软件中的缺陷,确保软…

o3 发布了,摔碎了码农的饭碗

大家好,我是汤师爷~ 在 2024 年底,OpenAI 发布了最新推理模型 o3。o3模型相当炸裂,在世界级编程比赛中拿下第 175 名,打败 99.9% 的参赛者。AI 写代码都赶上顶级程序员了,程序员是不是要失业?最近不少读者反馈,像 GitHub Copilot、Claude Sonnet 3.5、Cursor 等 AI 辅助…