1.面向对象概述
1.1 vs 面向过程
面向过程:你找对象为例,你每一步都亲历亲为,
动作的一个执行者
。
面向对象:找一个合适的人帮你干活。
红娘
,
动作的指挥着
。
面向
对象
的核心:就是找合适的人,帮你干活【调用方法】
1.2 OOP/OOA
OOP
:
Oriented Object Programming
,面向对象编程
OOA
:
Oriented Object Arti....
,面向对象分析
/
设计
2.对象概念
世界由什么组成的?原子、万物、人、动物
.......
我们在认识世界的过程中,无形以分类去划分。
2.1 对象的概念
万物皆对象
对象
[
物
]
:
客观存在
的
实体
/
事务,比如
kb13
的张三,即张三就是一个对象。
类:是一个抽象的概念,将其当做一个模版。
2.2 找身边的对象
比如教室的投影仪,帅哥放的一个屁
2.3 程序中怎么玩
在
java
中,类是代码的组织单元【即我们的代码需要在类体中编写】,我们的对象需要通过类创建
出来。
找对象的特征:(静态特征
+
动态特征)
静态特征【属性】:身高、身材、性别、年龄
........
男:属性的值
动态特征【方法】:一般是动宾结构,吃喝拉撒睡,学习
在分析对象的特征的时候,要根据场景去分析出他的属性和方法,无法且没有必要穷举出所有的属
性和方法。
2.3.1 编写一个类
共性:属性和方法,将属性和方法写在一个文件中,这个文件是通过类组织
思考:
Java
源码本身提供了很多类,为什么还要自定义的。它不知道你具体类的属性和方法是啥,
也无法穷举世界万物。所以,它提供了一个种自定义类的方式
3.构造方法
若自定义了有参构造,那么你要给加上无参构造
----
》 当成一个好习惯
3.1 作用
1.
创建对象:
new
构造方法
(
有就传
)
2.
为属性赋初始值
3.2 特点
1.
方法名称跟类名一致
2.
我们没有定义这样的一个特殊方法,但是可以调用,说明
JDK
默认给我们提供了一个无参构造
3.
一旦我们显示定义有参构造,则默认的无参构造将失效。
4.
往往我们就需要使用无参构造,此时你应该自定义一个无参构造
5.
构造方法也有重载
6.
没有返回值,连
void
也不能有
4.this关键字
代表:代表的就是当前对象,就你造的哪个对象,代表的就是谁;只能用在你设计的那个类中
用法:
1.
this.
成员变量
:可以解决在构造方法中,跟形参重名的问题;在方法中调用的时候,可以增加可
读性
2.
this.
当前类的方法名
:此处
this
可以省,增加可读性
3.
this(
构造方法的参数
)
:可以在构造方法中调用其他的构造方法,必须放在构造方法的第一行
在一个构造方法中调用其他构造方法的目的:可以节省很多代码
6.成员变量vs局部变量
1. 位置不同
①成员变量:在类中
②局部变量:在方法中,形参,代码块
2. 初始值不同
①成员变量:有初始值,比如引用类型
null
,基本类型比如
int 0
②局部变量:必须初始化,才能使用【必须显示赋值,才能使用】
3. 作用范围不同
①成员变量:整个类中
②局部变量:它所在的
{}
范围
4. 在内存中的区域不同
栈
vs
队列:
栈:先进后出
队列:先进先出
FIFO ---
》
First in First out
①成员变量:在堆内存中
②局部变量:在栈中
5. 生命周期不同
①成员变量:随着对象的存在而存在,对象被标记为垃圾对象,需要一个过程,同时回收也需要一
个过程
②局部变量:在栈中,用完之后就出栈
7.对象数组
数组中存放的是对象
明确:
1.
数组如何定义?数据类型
[]
数组名称
2.
对象的数据类型是啥? 它的所属类,即该对象是通过哪个类【模版】造出来的。
String name; Stu
stu
3.
是否可以通过数组的方式操作对象?比如,获取到该班级所有学生的名字
需求:使用对象数组存放一批学生信息(姓名、学号、分数),若学生的分数低于
60
分,给他加
2
分辛
苦分。