面向对象基础知识总结
面向对象思想(理解)
- 面向对象是基于面向过程的一种编程思想
- 思想特点:
A: 是一种更符合我们思考习惯的思想
B: 把复杂的问题简单化
C: 让我们从执行者变成了指挥者 - 举例:
A: 洗衣服
B: 吃饭
C: 买电脑 - 举例并代码体现 把大象装进冰箱
类与对象(掌握)
- 我们学习编程是为了把现实世界的事物用编程语言描述来实现信息化。
- 现实世界事物是如何表达的呢?
属性:外在特征
行为:内在行为 - 我们学习的是 java 语言,它最基本的单位是类。
所以我们要学会用类来体现一个事物。 - 类:是一组相关的属性和行为的集合
- 对象:是该类事物的具体个体。
- 举例:
学生 类
张三 对象
类的组成(掌握)
- 成员变量
其实就是变量,只不过定义在类中,方法外,并且可以不用初始化。 - 成员方法
其实就是方法,只不过不需要 static 了 - 案例:
学生类
| |
类的使用(掌握)
- 创建对象
格式:类名 对象名 = new 类名 (); - 使用成员
成员变量:对象名。变量名; 成员方法:对象名。方法名 (…);
成员变量和局部变量的区别(理解)
- 在类中的位置不同
A: 成员变量 类中,方法外
B: 局部变量 方法的形式参数,或者方法体中 - 在内存中的位置不同
A: 成员变量 在堆中
B: 局部变量 在栈中 - 生命周期不同
A: 成员变量 随着对象的存在而存在,随着对象的消失而消失
B: 局部变量 随着方法的调用而存在,随着方法的调用完毕而消失 - 初始化值不同
A: 成员变量 有默认初始化值
B: 局部变量 没有默认值,必须先声明,赋值,最后才能使用
形式参数问题(理解)
- 基本类型
基本类型作为形式参数,需要的是该基本类型的值。 - 引用类型
引用类型作为形式参数,需要的是该引用类型的地址值。(对象)
匿名对象(理解)
- 匿名对象:没有名字的对象。是对象的简化书写方式。
- 使用场景
A: 调用方法,仅仅只调用一次
B: 作为实际参数传递
封装(掌握)
- 隐藏实现细节,提供公共的访问方式
- 好处:
A: 隐藏实现细节,提供公共的访问方式
B: 提高了代码的复用性
C: 提高了代码的安全性 - 使用原则
A: 把成员变量隐藏
B: 给出该成员变量对应的公共访问方式
private 关键字(掌握)
- 是一个权限修饰符
- 可以修饰类的成员(成员变量和成员方法)
- 仅仅在本类中可以访问,对外提供对应的 GetXXX(),SetXXX() 等方法
- 标准代码:
| |
this 关键字(掌握)
- this:代表本类的对象
- 应用场景:
解决了局部变量隐藏成员变量的问题。
其他用法和 super 一起讲。 - 标准代码:
| |
构造方法(掌握)
- 作用:对对象的数据进行初始化。
- 特点:
A: 方法名和类名相同
B: 没有返回值类型
C: 没有返回值 - 注意事项
A: 如果我们没写构造方法,系统将默认给出无参构造方法
B: 如果我们写了构造方法,系统将不再给出默认无参构造方法
建议:我们自己手动给出无参构造方法 - 给成员变量赋值:
A: 无参+setXxx()
B: 带参 - 一个标准的代码:
| |
对象的初始化过程(理解)
- Student s = new Student(); 做了哪些事情
A: 加载 Student.class 文件进内存
B: 在栈中为 s 开辟空间
C: 在堆中为学生对象开辟空间
D: 为学生对象的成员变量赋默认值
E: 为学生对象的成员变量赋显示值
F: 通过构造方法给成员变量赋值
G: 对象构造完毕,把地址赋值给 s 变量
static 关键字(掌握)
- 是一个状态修饰符。静态的意思
- 它可以修饰成员变量和成员方法
- 特点:
A: 随着类的加载而加载
B: 优先于对象存在
C: 被所有对象共享
这也是判断我们是不是该使用静态的条件
举例:饮水机(可共享 static) 和水杯例子。
D: 可以通过类名调用
静态修饰的内容,可以通过类名调用,也可以通过对象名调用 - 方法访问特点
A: 普通成员方法
可以访问静态成员变量,非静态成员变量,静态成员方法,非静态成员方法
B: 静态成员方法
只能访问静态成员变量,静态成员方法
简记:静态只能访问静态
注意:
静态中是不能有 this 的。
先进内存的不能访问后进内存的。反之可以。
| |
| |
| |
静态成员变量和普通成员变量的区别(理解)
- 所属不同
静态属于类的,称为类变量
非静态属于对象的,称为对象变量,实例变量 - 内存空间不同
静态在方法区的静态区
非静态在堆内存 - 生命周期不同
静态随着类的加载而加载,随着类的消失而消失
非静态随着对象的创建而存在,随着对象的消失而消失 - 调用不同
静态可以通过类名调用,也可以通过对象名调用。建议通过类名调用
非静态只能通过对象名调用
main 方法是静态的(理解)
| |
public: 访问权限修饰符,表示最大的访问权限,被 jvm 调用,所有权限要够大。
static: 被 jvm 调用,不用创建对象,直接类名访问
void: 被 jvm 调用,不需要给 jvm 返回值
main: 一个通用的名称,虽然不是关键字,但是被 jvm 识别
String[] args:
早期出现是为了接收键盘录入数据的。