面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉外界对象有那些功能。 后者以前者为基础。 大的对象的属性也可以是一个对象。 ### JAVA学习笔记 #### 面向对象与面向过程对比 **面向对象**与**面向过程**是两种软件设计范式,在计算机科学中占据着重要的地位。本文将深入探讨这两种编程方式的区别及其应用场景,并着重介绍面向对象编程的核心概念。 #### 什么是面向过程? 面向过程编程是一种基于函数的编程模式,它将程序视为一系列过程或函数的集合。在面向过程的程序中,解决问题的方法是通过定义一系列独立的函数来实现。这些函数按照特定的顺序执行,共同完成整个任务。例如,排序算法通常被封装为一个函数,可以被程序的其他部分调用。 **特点:** - **基本单元是函数**:函数是面向过程程序的基本构成单元。 - **关注点在于算法**:面向过程的程序设计更侧重于算法的设计,即如何通过一系列的步骤来解决问题。 - **数据和行为分离**:在面向过程编程中,数据和对数据的操作通常是分离的。 #### 什么是对象? 在面向对象编程中,“对象”是核心的概念之一,它可以被理解为现实世界中的实体或者概念的一个抽象表示。一切皆可视为对象(EVERYTHING IS OBJECT),这意味着无论是现实生活中的物品还是概念都可以被抽象成对象。 **对象的两个方面:** - **属性**:用来描述对象的特征,比如一个人的姓名、年龄等。 - **方法**:对象能够执行的行为或操作,比如一个人可以行走、说话等。 **特点:** - **高内聚,低耦合**:对象的设计应该使其内部功能紧密相关(高内聚),同时与其他对象的交互尽可能少(低耦合)。 - **封装**:对象的方法实现细节对外部隐藏,只有方法的接口暴露出来。 - **继承和多态**:通过继承机制,子类可以从父类继承属性和方法,从而实现代码的复用。多态则是指同一种行为具有多种不同的表现形式的能力。 #### 为什么选择面向对象? 1. **符合人类认知习惯**:面向对象编程更加符合人们认识世界的习惯,即通过识别对象和它们之间的关系来理解问题。 2. **提高代码的复用性和可维护性**:通过类和对象的封装、继承以及多态机制,可以有效地提高代码的复用性,并简化程序的维护工作。 3. **易于扩展**:由于面向对象编程强调模块化设计,所以很容易添加新的类和对象而不影响现有的程序结构。 #### 类与对象的关系 - **类**:是对象的模板或蓝图,定义了一组相同的对象所共有的属性和方法。 - **对象**:是类的一个实例,具体实现了类定义的属性和方法。 #### 实例变量与局部变量 - **实例变量**:定义在类中但在任何方法之外,用于存储对象的状态。每个对象拥有自己独立的一份副本。 - **局部变量**:定义在方法之中,用于存储临时数据。局部变量的作用范围仅限于定义它的方法内部。 #### 方法的定义 方法是类的一部分,用于定义对象的行为。方法的定义包括以下几个组成部分: - **修饰符**:例如`public`、`private`等,决定了方法的访问权限。 - **返回类型**:方法执行完毕后返回的数据类型。 - **方法名**:标识该方法的名称。 - **参数列表**:方法接收的输入值。 - **方法体**:包含具体的执行逻辑。 #### 构造方法 构造方法是一种特殊的方法,用于初始化新创建的对象。每个类至少有一个构造方法,如果没有显式定义,则默认提供一个不带参数的构造方法。 **特点:** - **方法名与类名相同**。 - **没有返回值**。 - **在创建对象时自动调用**。 #### 方法的重载与覆盖 - **重载(Overloading)**:在同一类中可以定义多个同名方法,只要它们的参数列表不同即可。这使得方法可以根据传入的不同参数来决定执行哪一段代码。 - **覆盖(Overriding)**:子类可以重新定义父类的方法,以便在子类中提供特定的实现。这种方法主要用于扩展父类的功能。 #### 总结 面向对象编程提供了强大的工具和技术,有助于构建大型、复杂的软件系统。通过合理地设计类和对象,开发者可以创建出易于维护、扩展性强的应用程序。理解面向对象的核心概念和原则是成为一名优秀程序员的关键。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Agilent3070 BT-BASIC语法介绍 英文版
- π型滤波器设计-计算公式
- fusion360练习项目,树莓派4b外壳3D打印(stl及f3d文件格式)可直接使用嘉立创打印
- net6实现Web微服务模块组件化,控制层Controllers分组件自动加载、卸载,无需重启,开发不依赖于全套代码,版本灵活
- c++系统系列-工资管理系统-车票系统At
- 少儿编程python教案-初识Python
- C#WPF之初级,中级,高级技术指南以及面试题目
- Python编程快速入门作品-第60集画渐变星星
- 【基于江科大教程】stm32f103c8t6同时开启2个串口通信USART1和USART3
- 重庆理工大学机器学习作业.zip重庆理工大学机器学习作业.zip