程序设计就是对复杂度的管理
在头脑中创建一个模型,用于加强对Java的深入理解,如果你遇到疑问,你就的将它反馈给你的模型,并推断答案.
每个对象都有一个接口
尽管我们在面向对象程序设计中实际所做的创建新的数据类型,但实际上所有面向对象设计语言都是用Class关键词来表示数据类型.当你看到类型(Type)一次时,请将其作为类(Class)来考虑,反之亦然.
面对对象的方法并不是局限于构建仿真程序,任何程序都是你设计的系统的一个仿真的概念,面向对象技术确实可以将大量的问题讲解为一个简单的解决方案.
每个对象都提供服务
将对象作为服务提供者看待是一个伟大的简化工具,它不仅在设计过程中非常有用,而且当其他人试图理解你的代码或重用某个对象时,它会使将对象调整到适应其设计的过程变得简单的多.
被隐藏的具体实现
public表示紧随其后的元素对任何人都是可用的.
private表示除类型创建者和该类型的内部方法之外任何人都不能访问的元素.
protected与private差别在于继承类可以访问protected成员.
default可以访问同一个包中的其他成员.
继承:复用接口
通过继承而产生的类型等价是理解面向对象程序设计方法内涵的重要门槛.
- 是一个(is-a)与像一个(is-like-a)关系
is-a:完全相同的接口类型
is-like-a:添加新的接口元素
伴随多态的可互换对象
后期绑定
抽象:抽象方法只能在抽象类内部创建,当该类被继承时,抽象方法必须被实现,否则继承类依然是一个抽象类.创建抽象方法使得你可以将一个方法置于接口中而不必被迫为此方法提供可能毫无意义的方法体.
接口:提供了接口与实现的完美分离,可以将多个接口组合到一起
接口可以继承多个接口。
不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。
interface b{}
interface c{}
interface a extends b,c{}//对
class b{}
class c{}
class a extends b,c{}//错
类的继承和接口的实现,接口也是可以继承接口的。 .
对象的创建、使用和生命周期
C++对象的存储空间和生命周期可以在编写程序时确实.
Java动态创建对象.
C++必须通过编程方式来确定何时销毁对象.
Java自动发现对象何时不再使用.
- 集合(collection)与迭代器(iterator)
List(列表,用于储存序列)
arraylist:随机访问元素是一个花费固定时间的操作
linkedlist:随机选取元素需要在列表中移动,其代价是高昂的,访问越靠近表尾的元素,花费的时间越长.
另一方面,如果你想在序列中间插入一个元素,linkedlist却比arraylist要小.
在设计阶段,你可以使用linkedlist,在优化系统性能时,改用arraylist.基类List和迭代器所带来的抽象把你在容器之间转换时对代码产生的影响降到了最低.
Map(散列表,也被称为关联数组,用来建立对象之间的关联)
Set(集类,用于储存一类对象)
Queue(列队)、Tree(树)、Stack(堆栈)
-
单根继承结构
-
向下转型(downcasting)与模板/泛型(template/generic)
-
保证正确清楚
- 垃圾回收与效率和灵活性
异常处理:处理错误
并发
持久性
Java与Internet
Java为什么成功
-
系统易于表达、易于理解
-
通过类库得到最大支持
-
错误处理
Java与C++
总结
分享到:
相关推荐
#### 第一章 引论 ##### 1.1 基本概念 **1.1.1 信息与数据** 1. **信息**: 客观世界事物的存在方式和运动状态的反映,是对事物之间相互联系、相互作用的描述。信息具有可感知、可存储、可加工、可传递和可再生的...
车牌识别项目
python、yolo
Ollama本地模型对话、选择本地文件、本地图像对话 1、新增根据聊天记录回复的功能。 2、优化了部分ViewModel,将对应Model字段、属性移到Model中,方便后续扩展。 3、新增读取外部数据回复问题功能,目前支持txt文件。 4、新增添加图片提问题功能,模型需要支持视觉(如:minicpm-v:latest)。 5、优化了类结构,创建对应的Model(MainWindowModel),将所有字段、属性移到Model。 6、新增聊天记录窗体,修改了窗体加载时,加载聊天记录的功能。将其拆分成一个视图。 7、移除了折叠栏功能,更新为Grid区域的显示与隐藏。 将聊天记录列表从主窗体中分离)。 8、更新记录文件加载功能,显示提问日期。 新增选择文件类型设置预览图标。 9、新增功能,新聊天后第一次提问完成后,保存的记录刷新到记录列表、记录删除功能。 10、新增功能,创建新窗体判断显示Ollama服务运行状态。
车牌识别项目
人工智能、大语言模型相关学习资料
车牌识别项目
图像处理项目实战
P+F安全栅组态软件
图像处理项目实战
图像处理项目实战
车牌识别项目
COMBAT FURY.7z
车牌识别项目
系统选用B/S模式,后端应用springboot框架,前端应用vue框架, MySQL为后台数据库。 本系统基于java设计的各项功能,数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。 在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。
车牌识别项目
这是第2402节课的内容,作为复习资料
采用最新OCR引擎结合优化算法,使得识别性能极大提升!给广大文字工作者带来了福音......
车牌识别项目
系统选用B/S模式,后端应用springboot框架,前端应用vue框架, MySQL为后台数据库。 本系统基于java设计的各项功能,数据库服务器端采用了Mysql作为后台数据库,使Web与数据库紧密联系起来。 在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。