一、面向对象与面向过程
1、面向过程
- 角度是功能,以方法为最小单位,思考的是具体怎么做。
2、面向对象
- 角度是抽象,以类为最小单位,思考的是谁来做。
3、示例:“小明去上班”
- 面向过程
- 起床,刷牙洗脸,出门,打车,上车,出发,上班;
- 面向对象
- 小明: 起床,刷牙洗脸,出门,打车,付钱,上班;
- 司机: 开车,收钱
- 车: 跑
二、类和对象
1、概述
- 类
- 属性,方法,构造器,代码块;
- 类属性,静态方法,静态代码块;
- 内部类,匿名内部类;
- 对象/实例
- 类(模板,图纸,规范) -> 对象(实实在在的”生物”);
- Class -> new -> Instance;
- 特性
- 封装,继承,多态;
- 语法
- 关键字: this, super, class, final, static, private, public, protected, abstract, interface, package;
- 初始化流程: .java -> .class-> 类 -> 对象 -> 运行
2、内存示意图
3、成员变量&局部变量
- 相同点
- 都是变量,定义语法一致
- 不同点
- 作用域不同;
- 存储位置不同;
- 编写位置不同;
- 注意
- 就近原则;
4、方法
- 返回值
- 无返回值(void);
- 有返回值(Object);
- 形参
- 值传递(基本数据类型);
- 引用传递(引用数据类型);
- 备注
- 权限修饰符与封装一起;
5、构造器
- 本质
- 实例化一个类时所使用的特殊”方法”;
- 任何一个类都有一个默认的构造器
- 作用
- 丰富实例化时的数据传入;
- 注意
- 构造器可以有多个即重载;
- 显示定义一个构造器,默认的就会被覆盖;
6、this关键字
- 本质
- 指向当前对象的指针;
- 理解
- 编写的代码所在的位置是类,而对象是基于类的产物,是后期产生的;
- 当在编写一些属性或方法时,还并不知道对象是谁,因此使用一个”指针”(编写代码时还不确定是谁)来占位;
- this就代表当前创建的对象;
三、类和对象总结
- 概述
- 同一个类创建的不同对象本质上是两个独立的;
- 我们编写的class其实是一个模板,它不干活;
- 真正干活的是new出来之后的那个对象;
- 区别
- 本质: 编写的是类, 运行的是对象;
- 存储位置: 类存储在方法区,对象存储在堆中;
- 注意
- 类本身也是对象Class;