# 面向对象

# 面向对象和棉线过程的比较

面向对象相对于面向过程而言的

无论是面向对象还是面向过程,都是一种思维方式

面向过程:注重流程中的每一个步骤 --- 自己动手

面向对象:注重对象的寻找,只要找到了这个对象,这个对象就会去完成需求 --- 找别人代替

面向对象是能够完成分工合作

{width="5.129861111111111in" height="2.5506944444444444in"}

面向对象是优于面向过程吗? --- 不一定 --- 如果是相对简单的事务,面向过程相对效率较高;如果是相对复杂的事务,建议使用面向对象

面向对象本身是基于面向过程的

# 类和对象的关系

对一类事务/对象进行总结和抽取,将特征抽取为属性,将行为概括为方法,就可以用一个类来表示这一类事务/对象 --- 类是对象的总结/提取/概括

利用new关键字去创建对象,然后可以对象进行属性的赋值或者是调用方法 --- 对象是类的具体化/实例化

# 对象的存储

{width="5.309027777777778in" height="2.28125in"}

{width="5.429861111111111in" height="2.438888888888889in"}

{width="5.413194444444445in" height="2.4680555555555554in"}

# 成员变量和局部变量

成员变量:定义在类中的变量

局部变量:定义在方法中的变量

成员变量和局部变量的区别:


                      成员变量                                         局部变量

定义位置 定义在类中 定义在方法/代码块中

存储位置 存储在堆内存中,并且在堆内存中会自动赋予默认值 存储在栈内存中

生命周期 在对象创建的时候产生,在对象被回收的释放 在方法执行的时候产生,方法执行完成之后,局部变量就随着方法一起移除出栈内存


# 构造方法

特点:与类同名,没有返回值类型

作用:用于创建对象

如果一个类中没有手动定义构造方法,那么类在编译的时候会自动添加一个无参构造;如果手动定义了构造方法,那么在编译的时候就不再添加

构造方法可以重载

# this关键字

this用在类里面,代表当前在活动的对象,可以认为是一个虚拟对象

通过this在本类中调用本类的属性或者是方法

在类外,通过对象来调用方法或者是属性;那么在类内就以this代替

this语句 --- 表示调用本类中对应形式的构造方法。this语句必须在当前构造方法的首行

# 代码块

初始化代码块/构造代码块

在类中用{}括起来的代码 --- 无论调用哪个构造方法,都会先于构造方法执行一次

局部代码块

在方法中,用一对{}括起来的代码 --- 限制变量的生命周期以提高栈内存的利用率

# 面向对象的特征

封装、继承、多态、(抽象)

# 封装

体现形式:

  1. 方法 - 提高了代码的利用率

  2. 类 - 将属性和方法封装到一个逻辑块 -> 类

    1. 属性的私有化 -

      将属性用private修饰避免在类外直接操作属性值,然后通过对外提供的方法(一般是get/set方法)来间接操作属性的值,这种方法有效的避免属性出现不合法的数据的场景

    2. 内部类

Last Updated: 11/18/2022, 10:55:14 AM