# 面向对象
# 面向对象和棉线过程的比较
面向对象相对于面向过程而言的
无论是面向对象还是面向过程,都是一种思维方式
面向过程:注重流程中的每一个步骤 --- 自己动手
面向对象:注重对象的寻找,只要找到了这个对象,这个对象就会去完成需求 --- 找别人代替
面向对象是能够完成分工合作
{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语句必须在当前构造方法的首行
# 代码块
初始化代码块/构造代码块
在类中用{}括起来的代码 --- 无论调用哪个构造方法,都会先于构造方法执行一次
局部代码块
在方法中,用一对{}括起来的代码 --- 限制变量的生命周期以提高栈内存的利用率
# 面向对象的特征
封装、继承、多态、(抽象)
# 封装
体现形式:
方法 - 提高了代码的利用率
类 - 将属性和方法封装到一个逻辑块 -> 类
属性的私有化 -
将属性用private修饰避免在类外直接操作属性值,然后通过对外提供的方法(一般是get/set方法)来间接操作属性的值,这种方法有效的避免属性出现不合法的数据的场景
内部类
← 05数组与内存结构 08静态变量征与方法 →