面向对象
一、类
1.1 概述
- 面向对象:
优点:耦合度低,扩展能力强,更容易解决现实问题中更复杂的业务逻辑,组件复用性强
缺点:前期投入成本高,需要进行独立体的抽取,大量的系统分析与设计 - 面向对象三大特征:
- 封装
- 继承
- 多态
- 面向对象开发流程
- 面向对象的分析 Object-Oriented Analysis OOA
- 面向对象的设计 Object-Oriented Design OOD
- 面向对象的编程 Object-Oriented Programming OOP
- 开发过程:
- 现实世界发现对象
- 发现多个对象,寻找共同的特征,形成类
- 用Java代码表述一个类
- 通过类创建对象
- 对象直接协作起来形成一个系统
1.2 类
-
类:对现实生活中一类具有共同属性和行为的事物/对象的抽象
特点:- 类是对象的数据类型
- 类是具有相同属性和行为的一组对象的组合
-
类描述的是对象的共同特征。
这个特征在访问时,必须先创建对象,然后通过对象去访问这个特征。比如身高,必须先创建一个对象,学生,访问这个学生的身高才有意义。 -
共同特征主要是状态和动作
- 状态通常对应类的属性,动作通常对应类的方法。
- 状态和动作具体到某个对象上时,其结果可能不一样。
-
类到对象的过程:实例化 对象又被成为实例
对象到类的过程:抽象 -
类和对象的关系:类是对象的抽象,对象是类的实体
-
类的组成
- 属性:对象的特征,在类中通过成员变量来体现
- 行为:对象的功能,在类中通过成员方法来体现
-
类的定义
- 引入
定义学生类,看其共同特征/public class Student{ }- 状态信息/属性,通常是一个变量的形式,类中方法外为成员变量,系统会给默认值
- 学号
- 姓名
- 年龄
- 动作信息/行为,通常是一个方法的形式,可以是无参方法,也可以是带参方法
- 吃饭
- 睡觉
- 学习
- 状态信息/属性,通常是一个变量的形式,类中方法外为成员变量,系统会给默认值
语法结构:
【修饰符列表】 class 类名{
属性;//一般 数据类型 变量名,成员变量,系统有默认值 方法;//
}
- 引入
-
这个学生类(学生类型)是引用数据类型
int a = 2;
String s = “abc”;
Student ss = ???;
s/ss 被称作引用,a被称作变量名 -
空指针异常
空引用访问“实例”相关的数据一定会出现空指针异常
实例相关的数据:这个数据访问的时候必须有对象的参与
二、 对象
2.1 对象的创建与使用
一、 概述
- 成员变量:定义在类中,方法外的变量
- 无static修饰叫实例变量
- 有static修饰叫类变量
- 对象:实际存在的个体,这个个体具有各种特征。具有相同属性的对象可以构成类。但是对象与对象之间有差异,个性,对象与对象之间的特征值是不同的。
- 对象的本质是new运算符在堆内存中开辟的内存空间
- 引用是一个变量,保存了一个Java对象的内存地址,可以是局部变量,也可以是成员变量
- C中指针的存在可以使程序员直接操控指针对应的堆内存空间,但是Java中屏蔽了指针的概念,要想操作堆内存中对象内部的实例变量,必须借助引用。
- 成员变量在堆中,局部变量在栈中。main方法中定义的变量都在栈中
- 对象的属性:对象具有各种特征,每个对象的每个属性都拥有特定的值
- 对象的行为:对象能进行的操作
- 对象的创建与调用