面向对象的初步认识
什么是面向对象?
如何面向对象?
为什么是面向对象?还面向什么吗?
一.面向对象的初步认识
1.(了解)面向对象vs面向过程
例:实现人把大象装进冰箱
- 面向对象:
1 | public class 人{//可以这么理解 |
- 面向过程:
①人打开冰箱;
②将大象放进冰箱;
③关闭冰箱
2.面向对象的编程专注于类的设计!
1)一个项目或工程, 不管多庞大, 一定是有一个一个类构成的.
2)类是抽象的, 好比是制造汽车的图纸. 而具体的一辆一辆的车, 是根据图纸制造的, 实际上就是类的实例化(即对象)
3.完成一个项目(或功能)的思路
1)所要完成的功能对应的类的对象是否存在.
2)若存在, 则通过对象直接调用对应的类中的属性或方法即可.
3)若不存在, 需要创建类的对象.甚至说, 类都不存在, 就需要设计类.
4.面向对象编程的三条主线
1)类及类的构成成分:属性 方法 构造器 代码块 内部类
2)面向对象编程的特征:封装性 继承性 多态性(抽象性)
3)其它的关键字:this super package import static final abstract interface …
二.类及对象
1.关于类的设计
2.类的组成成分:
1)属性(成员变量, Field)
2)方法(成员方法, 函数, Method)
2.1属性:
成员变量 vs 局部变量
相同点: 1.遵循变量声明的格式: 数据类型 变量名 = 初始化值 2.都有作用域
不同点: 1.声明的位置的不同: 成员变量: 声明在类里, 方法外; 局部变量: 声明在方法内, 方法的形参部分, 代码块内
2.成员变量的修饰符有四个:public private protected 缺省, 局部变量没有修饰符, 与所在的方法修饰符相同
3.初始化值: 一定会有初始化值, 成员变量:如果在声明的时候, 不显式的赋值, 那么不同数据类型会有不同的默认初始化值.局部变量: 一定要显式的赋值.(局部变量没有默认初始化值)
- byte short int long ==>0
- float double ==>0.0
- char ==>空格
- boolean ==>false
- 引用类型变量==>null
4.二者在内存中存放的位置不同:成员变量存在于堆空间中; 局部变量: 栈空间中
总结: 关于变量的分类:
- 1)按照数据类型的不同: 基本数据类型(8种)&引用数据类型
- 2)按照声明的位置的不同: 成员变量 & 局部变量
2.2 方法: 提供某种功能的实现
- 1)实例:
1 | public void eat(){//方法体} |
格式: 权限修饰符 返回值类型(void:无返回值/具体的返回值) 方法名(形参){}
- 2)关于返回值类型: void: 表明此方法不需要返回值
有返回值的方法: 在方法的最后一定有return + 返回值类型对应的变量
记忆: void 与return不可以同时出现一个方法内. 像一对“冤家”.
- 3)方法内可以调用本类的其他方法或属性, 但是不能在方法内再定义方法!
3.面向对象编程的思想的落地法则一:
1)设计并创建类及类的成分
2)实例化类的对象
3)通过“对象.属性”或"对象.方法"的形式完成某项功能
4.类的初始化的内存解析
4.1 内存划分的结构:
- 栈(stack):局部变量、对象的引用名、数组的引用名
- 堆(heap):new 出来的“东西”(如: 对象的实体, 数组的实体), 含成员变量
- 方法区: 含字符串常量
- 静态域: 声明为static的变量
4.2 理解的基础上, 学会基本的创建的类的对象在内存中的运行.