### 面向对象总结 #### 1. 初识对象 ##### 1.1 熟悉面向对象 在面向对象编程中,一切皆可视为对象。对象是由类定义的实体,它不仅包含了数据(即属性),还包含了对这些数据进行操作的方法。通过表格法来理解对象的概念是一种直观的方法: - **表格法**:每个对象可以想象成一个表格,其中列代表类的属性(成员变量),行则表示不同对象的数据存储。例如,如果我们要表示学生这个概念,那么每一行可以是一个学生的信息(如姓名、年龄、成绩等),而这些列则构成了学生类的属性。 - **引入对象及类**:类定义了对象的结构和行为。一个类可以被看作是一个模板或者蓝图,根据这个模板可以创建出多个具有相同特性的对象。 ##### 1.2 面向过程 vs 面向对象 - **进化史**:早期的编程语言如C语言主要采用的是面向过程的思想,即按照步骤顺序执行任务。随着软件复杂度的提高,面向对象的思想逐渐发展起来。 - **区别**: - **面向过程**:侧重于执行的步骤,关注如何解决问题。 - **面向对象**:强调通过对象间的交互来解决问题,更侧重于数据和行为的封装。 - **面向对象设计和分析思维**:面向对象编程的核心思想是通过对象来组织程序,使得程序更易于理解和维护。例如,写一首诗可以看作是一个对象,这首诗的对象就是诗人,通过诗人这个对象可以创作出不同的诗歌。 #### 1.3 类和对象 - **定义**:类是对一类对象共同特性和行为的抽象描述。对象则是类的具体实例,是基于类创建出来的。 - **属性**:类中的属性是指对象的状态,通常由变量表示,这些变量也称为成员变量。例如,对于一个学生类来说,可能包括姓名、年龄等属性。 - **方法**:类中的方法指的是对象能够执行的行为或操作。例如,学生类可能会有一个方法用于获取学生的成绩。 #### 1.4 构造方法 - **定义方法**:构造方法是一种特殊的方法,主要用于对象的初始化工作。它有一些特殊的规则: - 如果未显式定义构造方法,编译器会自动生成一个无参的构造方法。 - 方法名必须与类名相同。 - 没有返回类型,也不能在构造方法内使用`return`返回值。 - 可以通过重载提供多个构造方法,满足不同的初始化需求。 #### 2. 对象中的机制 ##### 2.1 对象内存分析 - **建立虚拟内存模型**:在Java中,可以通过建立虚拟内存模型来更好地理解程序运行时内存的使用情况。 - **程序运行的内存分析**:Java程序运行时涉及的主要内存区域有栈内存、堆内存、方法区等。对象创建时,其属性值存放在堆内存中,而对对象的引用则存放在栈内存中。 - **参数**:在Java中,传递对象时传递的是对象的引用,而非对象本身。 ##### 2.2 垃圾回收机制 - **原理及算法**:Java通过自动化的垃圾回收机制来管理内存,避免了程序员手动释放内存的问题。 - **引用计数**:记录每个对象被引用的次数,当引用计数为零时,对象可以被回收。 - **根搜索**:从GC Roots开始遍历整个对象图,可达的对象被认为是活的,不可达的对象将被回收。 - **问题场景**:创建大量无用对象、使用静态集合类不当或监听器管理不当等情况可能导致内存泄漏。 #### 3. 编程三大特征 ##### 3.1 继承 - **概念&实现**:继承允许子类继承父类的特性,从而减少了重复代码并提高了代码的复用性。 - **接口运算符**:Java中使用`extends`关键字来实现类的继承。 - **方法重写**:子类可以重写父类的方法来改变或扩展行为。 - **继承&组合**:除了继承之外,还可以通过组合的方式实现复用,即在一个类中包含另一个类的实例。 ##### 3.2 封装 - **作用&含义**:封装是隐藏对象内部实现细节的过程,仅暴露必要的接口供外部调用。 - **访问控制符**:Java提供了四种访问级别: - `private`:仅当前类可以访问。 - `default`:同包内的类可以访问。 - `protected`:同包内的类、子类可以访问。 - `public`:任何地方都可以访问。 - **JavaBean封装**:在JavaBean中,属性通常是私有的(`private`),并通过公有的getter和setter方法访问这些属性。 ##### 3.3 多态 - **概念&实现**:多态是指一个接口可以被不同类的对象所实现,从而使同一接口具有多种形态。 - **对象转型**:为了利用多态特性,可以通过父类引用指向子类对象。但需要注意,向上转型是自动的,而向下转型需要显式地进行类型转换。 - **示例**: ```java Animal a = new Dog(); // 向上转型 ((Dog) a).bark(); // 向下转型后调用特定方法 ``` 以上总结了面向对象的基本概念、核心机制及三大特征,有助于深入理解Java编程语言的基础知识。
剩余8页未读,继续阅读
- 粉丝: 1
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python的uds诊断相关接口
- 视觉生成领域中的并行自回归模型加速研究
- 基于51单片机和DS18B20的温度检测和报警系统,可设置报警温度上下限,输出温度采用数码管显示
- 2020年山东省职业院校技能大赛网络搭建与应用赛题
- bp神经网络交叉验证算法和确定最佳隐含层节点个数matlab 程序,直接运行即可 数据excel格式,注释清楚,效果清晰,一步上手
- 基于51单片机设计的火灾报警器,传感器包括烟雾,光强,温度传感器,同时本工程包含了labview的上位机
- Python毕业设计-YOLOV5火灾火焰烟雾检测数据集+训练好的模型+标注好的数据+pyqt界面+源码
- Minecraft Python Console
- llvm cmake fsf fasdf der
- 445981218017804USB摄像头.apk
- Python毕业设计-YOLOV5火灾火焰烟雾检测数据集+模型+源码
- 预训练扩散变换器线性化优化方法:引入CLEAR机制加速图像生成
- 基于YOLOv5的神经网络训练用于检测火灾初期的火焰和烟雾模型源码+数据集
- Python毕业设计-基于YOLOv5的神经网络训练用于检测火灾初期的火焰和烟雾模型源码+数据集
- 基于PINN方法的热传导问题求解及结果输出
- Python基于YOLOv5的神经网络训练用于检测火灾初期的火焰和烟雾模型源码+数据集