面向对象(OOP)
- OOP Object Oriented Programming
你不能只知道中文不知道英文 - 面向对象 简单的来说就是抽象出一个盒子 你只需要使用这个盒子 不需要知道这个盒子里的机制是什么样的
- 面向对象的底层还是面向过程 将面向过程抽象为类 然后封装 方便我们使用
类
物以类聚的类 即将一组拥有相同属性和操作的对象进行分类
对象
万物皆对象
eg. 人是一个大的类 王小红是一个对象
对象和类的关系
类是对象的抽象
类是创建对象的模板
对象是类的实例
属性
对象所共有的特征
eg.王小红是个对象 王小红有性别、年龄、姓名
这些东西同时也是其他人有的
方法
对象共有的行为
eg.
王小红是一个对象
王小红需要吃饭、睡觉、喝水
吃饭、睡觉、喝水也是其他人拥有的行为
消息和方法
- 消息 也就是参数 数据是通过方法进行传递的
参数的传递(消息)
- Java中只有值传递
基本数据类型传递的是字面量
引用数据类型传递的是内存地址 - 基本数据类型的传递
传递的是值本身 - 引用数据类型的传递
传递的是引用,即内存地址 可以通过引用改变对象本身(存储在堆内存中的信息) - String是个特例 String虽然是特殊的引用类型 但是传递的值
eg.
基本数据类型
引用数据类型
创建一个引用类型的数据
String
可以发现 无论是静态初始化还是动态初始化 String的对象的值都未发生改变
方法
- 方法是用来执行业务逻辑的操作
- 方法由返回值、方法体、形参列表组成
- 形参列表中 参数可以有0个或多个 但一般我们约定不超过四个
- 返回值 可以是一个值、也可以是变量和表达式 但类型需和声明的类型一致
什么时候使用返回值
- 如果用户希望得到这个方法的计算结果以便进行后续的计算 ,那么我们设定返回值
- 如果这个方法的执行 只是进行某个操作 而不需要提供给用户对外的接口 则不设置返回值
构造函数
创建对象是通过构造函数来完成的
构造函数的特征
- 定义时 方法名和类名一致 且没有返回值
- 当一个类被声明时 这个类默认有一个无参的构造方法
- 当一个类显式的写出构造方法 默认的无参的构造方法就不存在了 如果需要使用则需要显示的编写
- 一个类可以有多个构造方法 它们之间叫做构造方法重载
- 构造方法的重载 方法名和类名相同 形参列别不同 在调用构造方法重载时有实参的列表来决定调用的是哪个构造方法重载
this关键字
this 表示当前对象,创建对象是谁 this指向的就是谁
this的作用
- 调用当前对象的成员变量、成员方法
- 构造函数中调用构造函数重载 必须在构造函数第一行调用