一、面向对象概述
Java是面向对象思想的高级计算机编程语言。
面向对象(简称:OOP)是一种以事物为中心的编程思想,是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的
重用性、灵活性和扩展性
。
面向对象思想:
思想:想法【解决某种问题的思路】
面向对象:解决某种问题的思路 == 编程思想【程序开发的方法】
在Java编程中,由执行者变成指挥者,所有的事都找对象去干,但是必须是能给你解决问题的对象,如果没有对象,那么就创建对象【把程序和数据封装到对象中】
比如:
# 去北京玩
A同学请全班同学去北京玩,在同学们出去玩之前,老师会先打印一张名单,名单上有全班同学的姓名以及手机号,名单交到班长手中,到了北京班长负责挨个点名,如果老师想了解同学们是否全部安全到达北京,只能找班长,因为其他人不能百分百知道全班同学是否到达北京。
# 有问题找对象
老师忽略了过程,注重了结果
老师忽略了过程,注重了对象【能给老师解决问题的对象】
二、面向过程概述
强调的是功能行为,面向过程”是一种以过程为中心的编程思想。“面向过程”他们不支持丰富的“面向对象”特性(比如继承、多态),就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程在这一系列工作的执行中,强调的是工作的执行。
三、面向对象和面向过程
- 买电脑
- 面向过程
- 查资料
- 电脑城砍价
- 被黑
- 痛苦归来
- 面向对象
- 找对象:老师
- 老师砍价
- 老师检测电脑
- 电脑成功购买
- 面向过程
- 吃饭
- 面向过程
- 自己动手做
- 买菜
- 洗菜
- 煮饭炒菜
- 很难吃,浪费时间
- 面向对象
- 找专业对象【能帮你解决问题的对象】
- 餐馆。点餐
- 餐馆,做饭
- 饭好吃,节约时间,精力
- 面向过程
- 找对象
- 求介绍、相亲、找现成的对象。【面向对象的思想:先找有的对象,直接拿来使用】
- 不满意,没有对象,自己造一个(sun没有提供,自己造对象)
面向对象成为了指挥者
面向对象高扩展性、高灵活性、高复用性并且解耦
面向过程成为了执行者
四、面向对象特征
面向对象的三大特征:封装、继承、多态
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系.
五、对象&组成
对象(object)代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子、一间教室,一台电脑都可以看做是一个对象。每个对象都有自己独特的状态标识和行为
对象的属性(attribute,或者状态(state)),学生有姓名和学号,该学生特有的姓名和学号就是该学生(对象)的属性。
对象的行为(behavior),是由方法定义,调用对象的一个方法,其实就是给对象发消息,要求对象完成一个动作。可以定义学生对象具备学习的行为。学生对象可以调用学习的方法,执行学习的动作
对象:必须单一、具体、是一个个体
比如:这个学生、这个男人、这个女人等。
对象的组成
对象的组成:特征【属性、成员变量】 + 行为【动作、成员方法】
七、类&组成
类:
1、是一个群体
2、是由多个具有共性的对象所组成
3、是创建对象的模板
类的组成
类的组成:特征【属性、成员变量】 + 行为【动作、成员方法】
在Java中,有需求找对象解决,先找现有的对象,如果没有就创建对象【先有类后有对象】
八、类&对象的创建
类的创建
package cn.com.example5;
// 创建一个类 类名为Hotel
public class Hotel {
// 属性【成员变量】
// [访问修饰符] 数据类型 属性名;
public String name = "爱家"; // 酒店名称
public int size; // 酒店大小
// 行为【成员方法】
// [访问修饰符] 返回值类型 方法名(){}
public void handlerCook(){
System.out.println("这是做饭的方法");
}
}
对象的创建
public static void main(String[] args) {
// 创建对象【实例化对象】
// 语法:类类型 对象名 = new 构造函方法();
Hotel hotel = new Hotel();
}
九、对象成员的调用
获取&设置属性值
public static void main(String[] args) {
// 创建对象【实例化对象】
Hotel hotel = new Hotel();
// 获取属性值
String name = hotel.name;
System.out.println(name);
// 设置属性值
hotel.size = 100;
System.out.println(hotel.size);
}
调用方法
// 调用方法
hotel.handlerCook();
十、成员变量和局部变量
成员变量:定义在类中的变量
局部变量:定义在方法中的变量
成员变量和局部变量的区别
1、应用范围
- 成员变量在整个类中都有效
- 局部变量只在其声明的方法中有效
2、生命周期
成员变量:它属于对象,随着对象的创建而创建,随着对象的消失而消失
局部变量:当方法被调用并执行到该变量而存在,方法执行完毕释放空间,该变量消失
// 局部变量
public void handlerMethod(int id){
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println(id);
}
}
}
这时候id、i、j都是在方法内声明的,全是局部变量
j当内层for循环执行它的生命周期开始,当内层循环结束,j消失
i当外层for循环执行它的生命周期开始,当外层循环结束,i消失
id在方法被调用时开始,方法结束时,id消失
3、存储位置
成员变量属于对象,它存储在堆内存中,当堆内存中的实体,没有被引用指向时,才垃圾回收清理
局部变量存储在栈内存中,当不再使用时,马上就会被释放
4、初始值
成员变量存储在堆内存中,如果没有赋值,它有默认值
整数类型:byte、short、int、long = 0;
char = '\u0000';
boolean = false;
String = null;
类类型 = null;
数组 = null;
局部变量,没有默认值,需要手动进行初始化
方法中、参数列表中、语句中,必须有初始值,否则不能使用