一. 面向对象
1.1 面向对象与面向过程的区别;
面向过程:面对需求“我该如何实现?”,按照分析的步骤一步步亲历亲为。(强调过程,线性思维)
面向对象:面对需求“我该找谁取实现?”,这个‘谁’就是对象,不关注过程。(强调对象,宏观思维)
两者是思维方式,思考角度不同的体现
1.2 面向对象的三大特征
- 封装:隐藏内部的实现细节,对外开放公共的方法方式。
- 继承:子类继承父类,就有权利使用父类中的内容(子承父业)。
- 多态:同一种类型的对象执行同一个方法时可以表现出不同的行为特征。
1.3 面向对象的三大思想
- OOA:面向对象分析(Object Oriented Analysis)
- OOD:面向对象设计(Object Oriented Design)
- OOP:面向对象程序(Object Oriented Programming )
1.4 如何构建一个对象:
类:事物的抽象描述。人类、植物类、动物类、类别。将实例个体中的共性抽取出来,归为一类。
对象:具体事物的实例。冰箱、空调、电脑、洗衣机、微波炉,万物皆可为对象 。
1.5 类和对象的关系
- 类是对一类事物的抽象描述,抽取对象像的部分。
- 对象是一类事物的实例,类的具体化表现形式。
- 类是对象的模板,对象是类的实体。
1.6 先有类,还是先有对象?
- 构建:先有对象,才有的类
- 实现:现有类才有的对象
1.7 类有属性和方法组成:
- 属性(特征):事物具有的特点(名字,颜色,形状等)
- 方法(行为):描述事物能做什么(吃饭,睡觉,行走等)
1.8 创建与使用
1.8.1 创建类格式:
修饰词 class 类名{
// 成员变量: 不被static关键词修饰 ->> 实例变量
修饰符 数据类型 变量名 = 赋值;
// 成员方法: 不被static关键词修饰的方法 ->> 实例方法
修饰符 返回值类型|void 方法名(参数列表){
方法体;
[return 返回值;]
}
}
1.8.2 变量的分类
按照声明位置不同分为局部变量
和成员变量
:
成员变量 | 局部变量 | ||
---|---|---|---|
类中的位置 | 类中方法外 | 方法中\代码块中的变量 | |
作用范围 | 类中 | 方法中 | |
初始值 | 默认值 | 没有默认值,使用前必须定义并赋值 | |
内存中位置 | 堆内存 | 栈内存 | |
生命周期 | 随着对象的创建而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
1.8.3 创建对象格式:
类名 对象名 = new 类名()
1.8.4 使用对象访问类中的成员
对象名.成员变量;
对象名.成员方法();
1.8.5 类的实例:
/**
* 创建一个person类:
* 铁柱,大脚
* 姓名,性别。。。。外在的表现形式 ->> 变量(成员变量)
* 吃饭,睡觉。。。。。。内在的功能 ->> 方法(成员方法)
*
* 成员变量: 抽取出的共性--> 外在的表现形式
* 成员方法: 抽取的共性 --> 内在的能力、功能
*/
public class Person {
public static void main(String[] args) {
// 创建对象
Person p1 = new Person();
p1.name = "赵铁柱"; // p1.name 修改值
String name = p1.name;
// 打印输出
System.out.println(name);
// 调用方法
p1.eat();
}
/* 属性、字段、域 */
String name;
/* 方法、功能 */
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
1.8.6 成员变量无需初始化,因为会给一个默认值
数据类型 | 默认值 | |
---|---|---|
基本类型 | 整数(byte,short,int,long) | 0 |
浮点数(float,double) | 0.0 | |
字符(char) | ‘\u0000’ | |
布尔(boolean) | false | |
引用类型 | 数组,类,接口 | null |
1.9 内存分析
但凡看见了new
关键字,做三件事:
开空间(堆)
。为对象在堆内存中开辟空间,成员变量会跟随对象进入到堆内存中并附初始值。初始化
。调用构造器为对象初始化信息。指向引用
。将地址返回给引用。