目录
一、面向过程与面向对象
(一)面向过程(POP)与面向对象(OOP)
- 二者都是一种思想,面向对象是相对于面向过程而言的。
面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。
面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。
- 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
(二)面向对象的三大特征
- 封装(Encapsulation)
- 继承(Inheritance)
- 多态(Polymorphism)
二、Java基本元素:类和对象
类(Class)和对象(Object)是面向对象的核心概念
- 类是对一类事物的描述,是抽象的、概念上的定义
- 对象是实际存在的该类十五的每个个体,因而也称为实例(instance)
类的重要性:是Java程序的基本组成单位
“万事万物皆对象”
(一)类
1. 类的定义
类的定义步骤:
- 定义类
- 编写类的成员变量
- 编写类的成员方法
public class 类名{
//成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
……
//成员方法
方法1;
方法2;
……
}
2. 类的组成
类的组成:属性和行为
(1)属性
属性:在类中通过成员变量来体现(类中方法外的变量)
(2)行为
行为:在类中通过成员方法来体现(与方法相比去掉static关键字即可)
(二)对象
对象的使用
1. 创建对象
- 格式:类名 对象名 = new 类名();
- 例:Person p1 = new Person();
2. 使用对象
成员变量
格式:对象名.变量名
例:p1.name
成员方法
格式:对象名.方法名
例:p1.eat
三、对象内存解析图
(一)对象内存图(单个对象)
- 首先,main 方法被加载到栈内存
- 创建对象,Student s 在 main 方法中出现;new Student 在堆内存开辟空间。成员变量都有默认值,同数组默认值规则
- 默认值为 null 与0
- s 通过001指向堆内存这块地址,然后 name 的值修改;同理, age 的值也修改
- 调用 study 方法,study 方法加载到栈内存
- 当 study 方法执行完毕,它就会从栈内存消失,其他方法同理
(二)对象内存图(多个对象)
s1 和 s2 成员变量的值是不同的,但是调用成员方法在控制台输出是一样的,所以说,其实多个对象是可以共用方法的,每个成员变量的值是有不同的
(三)对象内存图(多个对象指向相同)
- Student s2 出现在 main 方法中,s1 的地址赋值给s2
- 通过 s2 去修改 main 的值
- 最后输出都是修改后的值
- 执行完毕,main 方法最后从内存中消失
- 当两个对象的指向相同时(地址值相同的时候),其中一个对象修改了堆内存的内容,另一个对象去访问的时候,它的内容也是改变过的
四、成员变量和局部变量
(一)什么是成员变量和局部变量
成员变量(属性):类中方法外的变量
局部变量:方法中的变量
(二)成员变量和局部变量的区别
(方法声明:形参的位置。方法形参的变量,也是局部变量。)
成员变量(属性):可以在声明成员变量(属性)时,指明其权限,使用权限修饰符。
局部变量:不可以使用权限修饰符。
常用的权限修饰符:private、public、缺省(空着不写)、protected
(三)成员变量与局部变量的相同点
- 定义变量的格式:数据类型 变量名 = 变量值
- 先声明,后使用
- 变量都有其对应的作用域