目录
一、面向过程和面向对象的区别
1. 概述
2. 什么是面向过程?
3. 什么是面向对象?
4.小总结-区别
二、类和对象的概念
1. 什么是类?
2. 什么是对象?
3. 类和对象的关系
三、类和对象的代码表现
1. 定义类
2. 定义对象/创建对象
3. 对象的使用
一、面向过程和面向对象的区别
1. 概述
从编程语言方面:C语言是完全面向过程的,C++半面向对象,而Java语言是完全面向对象的。
2. 什么是面向过程?
面向过程的主要特点:
(1)注重实现某个功能步骤,就比如:第一步干什么,第二步干什么,第三步干什么……;
(2)注重实现某个功能过程中的因果关系,比如:因为A所以B,因为B所以C,因为C所以D……;
(3)没有对象的概念
(4)缺点:代码与代码之间耦合度高,扩展力差。原因是(2),在整个代码的每个步骤中一旦有一步出现问题,整个系统都会出现问题。
(5)优点:对于小型项目可以实现快速开发,不需要提取对象、建立模型等分析设计程序步骤。
3. 什么是面向对象?
(1)面向对象就是将现实的世界分割成不同的单元,然后把每个单元实现成一个个对象,进而每个对象进行交互协作,就形成了一个系统。
(2)举例:
有以下四个对象:张三、香烟、打火机、吸烟的场所,将这四个对象组合在一起,就可以模拟一个人的抽烟场景。(有点类似于小学语文的造句)
(3)采用面向对象方式进行开发:耦合度低,扩展力强。
(4)面向对象有关术语:
OOA:面向对象分析;OOD:面向对象设计;OOP:面向对象编程。
采用面向对象写软件的过程:分析(A) --> 设计(D) --> 编程(P)
(5)面向对象特征:封装、继承、多态(重要)
注:任何一个面向对象的编程语言都有这三个特征,Java只是面向对象编程语言的一种。
4.小总结-区别
面向过程主要关注:步骤+过程。
面向对象主要关注:有三个对象:对象A + 对象B + 对象C,然后对三个进行组合。
二、类和对象的概念
1. 什么是类?
类就是现实生活中抽象出来的具有共同特征的某些事物的组合,也可以说是一个模板(通过模板可以构造出事物,后面会有)。比如:学生,就是一类群体,即有一个类叫做 学生 类,这个学生类中有共同的特征比如有 名字,身高 等等。
2. 什么是对象?
对象就是现实生活中有实际存在、真实存在的个体。比如:小明同学,小红同学。而这两个同学都是属于[ 学生 ] 这个类。
注:对象的另一个名称:实例,可以理解为“实际的例子”,后面会写到通过类创建对象,即实例。
3. 类和对象的关系
首先看图:
解释一下:
(1)要拥有一个“对象”,必须先定义“类”,“对象”是通过“类”这个模板创造出来的。
注:类就是一个模板:类中描述的是所有对象的“共同特征”,对象就是通过类创建出来的个体。
(2)实例化:通过类这个模板创建对象的过程;
(3)抽象:多个对象具有的共同的特征,进行概括总结抽取出共同特征的过程。
(4)小总结:类--[ 实例化 ]-->对象(实例)
对象--[ 抽象 ]-->类
(5)多次提到共同特征,那么“共同特征”是个什么?
共同特征是,每个对象所表现出来的共有的属性,包括状态特征和动作特征。
比如: 学生:名字、身高--名词-->状态特征
打篮球、学习--动词-->动作特征
三、类和对象的代码表现
1. 定义类
类 = 属性 + 方法
属性来源于:状态;方法来源于:动作。
伪代码描述:
[修饰符列表] class 学生类{ // 修饰符列表可以省略 //属性-->以变量形式存在 名字属性; 身高属性; //方法-->描述动作/行为 打篮球方法(){ } 学习方法(){ } }
注:
(1)属性 就是 变量。
(2)伪码中写属性“以” 变量形式存在的原因:属性对应的是“数据”,数据在程序中只能存放在变量中。
(3)变量的划分(根据出现位置)
方法体中声明: 局部变量;方法体外声明:成员变量(这里的成员变量就是“属性”)
(4)对变量的小注记:记住 变量都是要先声明再赋值才能访问。成员变量可以不写赋值,实际上当没有初始化时是有赋默认值的。
(5)创建了对象之后,成员变量==实例变量
举例定义学生类的实际例子:
public class Student{ // 属性 // 学号(成员变量) int no; // 姓名 String name; // 年龄 int age; // 性别 boolean sex; // 住址 String address; // 方法 public void study(){ } public void basketball(){ } }
2. 定义对象/创建对象
(1)通过类来创建对象,一个类,可以创造N多个对象。
(2)创建对象的语法: 用new运算符
new 类名()
(3)对象的初始化:
Student s1 = new Student();
以上这句代码意思就是通过Studen类实例化了1个Studen对象。
要理解它可以对比普通变量的定义及其初始化。
int a = 100;
解释一下:
<1>先回顾数据类型:
基本数据类型:byte short int long float double boolean char
引用数据类型:String、XueSheng.....
<2> i是变量名, int 是变量 i 的数据类型而且是基本数据类型, 100 是具体的数据。
s1是变量名,Student是变量s1的数据类型而且是引用数据类型,new Student()这是一个对象(学生类创建出来的学生对象)。
(4)实例变量
对象又被称为是实例;
实例变量实际上就是:对象级别的变量。
(5)引用的概念:对象初始化语句中的s1就可以称为是一个引用,其中保存了内存地址,该地址指向堆内存当中创建好的对象。
3. 对象的使用
必须创建对象才能使用对象。
创建对象后可以通过对象对 实例变量 以及对象中的 方法 进行访问。
(1)访问实例变量:引用.实例变量名
//语法:引用.实例变量名 Student s1 = new Student(); System.out.println(s1.no); System.out.println(s1.name); System.out.println(s1.age); System.out.println(s1.sex); System.out.println(s1.addr);
注:<1> s1 属于局部变量,而且 s1 这个局部变量叫做引用
(2)对实例变量的修改:
s1.no = 110; s1.name = "张三"; s1.age = 20; s1.sex = true; s1.addr = "深圳宝安区";