面向对象编程 小咪咪 2022-02-17 05:27 435阅读 0赞 # 面向对象编程 # ### 概述: ### * 面向对象本身就是一种方法;一种对现实世界理解和抽象的方法。也是一种更加符合人类的思想习惯的思想,将复杂问题简单化,将我们从执行者变成了指挥者。角色发生了转换。 ### 与面向过程的比较: ### ##### 面向过程 ##### * 事物比较简单,可以用线性思维解决的。 * 首先要做什么,怎么做,最后我们再代码体现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,实现我们的功能。每一个步骤我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。 * 面向过程开发关心的就是每一步的实现,如果每一步都能够实现那么功能就能够实现,中间如果任何一个步骤出现问题,都会导致失败。 * 面向过程的代表语言:C语言 ##### 面向对象 ##### * 事物比较复杂,没法用线性思维解决的。 * 面向过程的编程思想只能满足简单功能的实现,但在实际开发当中,项目的功能只会越来越多,不会越来越少,需求也是不断地变化的,可随着需求的更改,功能的增多,发现需要面向每一个过程就很麻烦了,并且程序的可维护性也是非常非常差的,能不能把这每一个步骤和功能再进行封装,根据不同的功能,进行不同的封装,功能类似的封装在一起。使用的时候,找到对应的类就可以了。这就是面向对象的思想。 * OOA : 面向对象分析 : 分析解决某个事物一共有多少个对象参与。 * OOD:面向对象设计: 分析对象和对象之前的关系。 * OOP:面向对象编程。 * 面向对象的代表语言:Java ##### 面向对象的好处 ##### * 面向对象也是基于面向过程的编程思想,但是面向对象相比于面向过程更符合我们的思维方式,万物皆对象。 * 可以将复杂的问题简单化,大大提高了程序的可读性和可维护性。 * 面向过程思想中,我们是程序的执行者,面向对象当中,我们是程序的调用者,这样的话也可以方便程序给其他人调用,提高了程序的扩展性。 ##### 面向对象的特征 ##### 1. 封装(encapsulation) 2. 继承(inheritance) 3. 多态(polymorphism) 4. 抽象(abstract) -------------------- -------------------- ### 初步学习面向对象 ### ##### 一、什么是对象 ##### * 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。 * 对象的属性和行为: 1. 对象具有属性,一个对象用数据值来描述它的状态。就是该事物的描述信息。 2. 对象还有行为,用于改变对象的状态,对象及其操作就是对象的行为。就是该事物能够做什么。 3. 对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中 。 ##### 二、什么是类 ##### * 具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。 * Java中最基本的单位是类,Java中用类描述事物。 * 类中的属性和方法: 1. 类的属性:是对象的状态的抽象,用数据结构来描述类的属性。也就是事物的属性。 2. 类的方法:是对象的行为的抽象,用操作名和实现该操作的方法来描述。也就是事物的行为。 -------------------- **简单来说:对象就是对象是具体的,是客观存在的实例,是该类事物的具体体现。类是抽象的,是一组相关的属性和行为的集合,一个模板。 先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。** -------------------- ##### 举个例子: ##### 狗 小花 = new 狗(); 类:狗 是一个类。 对象:new 狗() 是一个对象,叫小花的狗 小花的性别、年龄、体重是它的属性;它叫、吃是它的行为。 -------------------- -------------------- ### 定义 ### ##### 定义一个类 ##### * Java中用class描述类 1. 成员变量表示就是事物的属性 2. 成员方法表示就是事物的行为 * 格式 \[访问权限修饰符\] class 类名\{ 成员变量 成员方法 \} class Dog{ //成员变量 String name; //成员变量 int age; //成员方法 public void bark(){ System.out.println("汪汪汪汪汪汪汪"); } } -------------------- ##### 创建和使用对象 ##### * 创建对象: * 类名 对象名 = new 类名(); `Dog tom = new Dog();` 创建了一个新的代号tom的小狗对象。 * 引用对象成员:使用“.”进行以下操作: * 引用类的属性:对象名.属性; * 引用类的方法:对象名.方法名(); //给name赋值为小花。 tom.name = "小花"; //调用bark方法。 tom.bark(); ### 内存分析 ### ##### 内存的分区 ##### * 栈: * 存放:局部变量 * 先进后出,自下而上存储 * 方法执行完毕,自动释放空间 * 堆: * 存放new出来的对象 * 需要垃圾回收器来回收:System.gc() * 方法区: * 存放:类的信息(代码)、 static变量、字符串常量等 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Z6eGV5_size_16_color_FFFFFF_t_70] 1. jvm先调用main方法,然后依次执行里面的。 2. new 一个新的对象时,会在堆区开辟内存空间,而栈区的Dog tom是引用的new Dog这个对象的内存地址。 3. 常量是放在堆区的常量池中的,也是调用的地址。 4. 在main方法里调用bark方法时,栈区会给bark 开辟一个空间,bark又调用放在方法区的内存地址。 5. 当bark执行完毕后会自动销毁,释放栈区的内存空间。 6. 当main方法执行完以后,也会自动释放。这时在堆区new Dog对象就没有被谁引用了,会被作为垃圾对象处理。当垃圾回收处理器空闲时会自动处理(不可控的、随机的)。 -------------------- -------------------- 以上 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Z6eGV5_size_16_color_FFFFFF_t_70]: /images/20220217/bcb7b718861547598602ace3d3d5644c.png
相关 面向对象编程 介绍 OOPs代表面向对象编程,这是一种编程范式,它使用对象和类来表示现实世界的实体及其行为。 OOP 的主要概念是将数据和处理该数据的函数作为一个单元绑定在一起,这样代 缺乏、安全感/ 2024年03月22日 18:06/ 0 赞/ 82 阅读
相关 面向对象编程 目录 面向对象编程 自定义类型 方法 组合 接口 接口变量值的类型 嵌入interface 练习题 实验总结 -------------------- 深碍√TFBOYSˉ_/ 2024年03月22日 08:41/ 0 赞/ 97 阅读
相关 面向对象编程 1. 面向对象概念 1.1 什么是对象 对象是相关状态和行为的包装,软件对象通常用于对日常生活中找到真实对象进行建模。 对象是理解面向对象技术的关键。看看周围,你 小咪咪/ 2023年01月23日 08:53/ 0 赞/ 65 阅读
相关 面向对象编程 函数的另一种形式 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ib 怼烎@/ 2022年11月13日 06:23/ 0 赞/ 295 阅读
相关 面向对象编程 面向对象编程 > 一切皆对象,面向对象编程特点封装、继承、多态 javascript的面向对象编程与其他的OOP语言不同,因为JS里没有类(class)的概念,什么是类,可 柔光的暖阳◎/ 2022年07月13日 09:49/ 0 赞/ 307 阅读
相关 面向对象编程 面向对象编程 概述: 面向对象本身就是一种方法;一种对现实世界理解和抽象的方法。也是一种更加符合人类的思想习惯的思想,将复杂问题简单化,将我们从执行者变成了指 小咪咪/ 2022年02月17日 05:27/ 0 赞/ 436 阅读
相关 面向对象编程 面向对象分为‘类’和‘实例’ 什么是类?类是对象的类型模版;例如Student,我们可以把它当做学生类型;它不具体代表某个学生; 什么是实例?实例是根据类型模版生成的对象; 矫情吗;*/ 2022年02月02日 05:21/ 0 赞/ 448 阅读
相关 面向对象编程,面向切面编程,面向过程编程 面向过程编程 面向过程编程(POP): 面向过程编程是以过程为中心的编程思想,从而分析解决问题所需要的步骤,然后编写函数来实现这些步骤,再依次调用这 一时失言乱红尘/ 2022年01月23日 07:13/ 0 赞/ 573 阅读
相关 面向对象编程 面向对象编程 面向过程编程:核心是过程,过程是一步一步的。先干啥,后干啥。 对扩展性要求较低的程序例如:系统内核,git,计算器,等等。 优点:逻辑清晰,复杂问 向右看齐/ 2021年11月02日 04:02/ 0 赞/ 566 阅读
还没有评论,来说两句吧...