面向对象思想概述
Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
- 面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。(强调步骤)
- 面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事儿。(强调对象)
特点
面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。 面向对象的语言中,包含了三大基本特征,即封装、继承和多态。
类和对象
什么是类
类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物。
现实中,描述一类事物:
- 属性:就是该事物的状态信息。例如:小猫的名字、体重、年龄、颜色。
- 行为:就是该事物能够做什么。例如:小猫的走、跑、叫。
什么是对象
对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。
现实中,一类事物的一个实例。例如:一只小猫。
- 属性有:tom、5kg、2 years、yellow 等等。
- 行为有:溜墙根走、蹦跶的跑、喵喵叫。
类与对象的关系
- 类是对一类事物的描述,是抽象的。
- 对象是一类事物的实例,是具体的。
- 类是对象的模板,对象是类的实体。
怎么定义类
Java语言就是对现实世界的模拟,事物与类的对比 现实世界的一类事物: 属性:事物的状态信息。 行为:事物能够做什么。 Java中用class描述事物也是如此: 成员变量:对应事物的属性 成员方法:对应事物的行为。
类的定义格式
详解:
- 定义类:就是定义类的成员,包括成员变量和成员方法。
- 成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
- 成员方法:和以前定义方法几乎是一样的。只不过是没有static修饰,static的作用在面向对象后面再详细讲解。
需求
定义一个类,用来模拟“学生”事物。学生有姓名,年龄。学生还会吃饭,睡觉,学习。
代码实现
package demo01_OOP;
public class Demo01Student {
//成员变量
String name;//姓名
int age;//年龄
//成员方法
public void eat() {
System.out.println("吃饭");
}
public void sleep() {
System.out.println("睡觉");
}
public void study() {
System.out.println("学习");
}
}
对象的创建及其使用(如何使用一个类)
通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。
1. 导包:也就是指出需要使用的类,在什么位置。
- 格式:import 包名称.类名称;
tips:
- 对于和当前类属于同一个包的情况,可以省略导包语句不写。
- 使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包下的所有类无需导入。
2. 创建对象
- 格式:类名称 对象名 = new 类名称();
3. 使用,分为两种情况:
- 使用成员变量:对象名.成员变量名
- 使用成员方法:对象名.成员方法名(参数)
- 总结:(也就是,想用谁,就用对象名点儿谁。)
注意事项:
- 如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。
使用Demo01Student类
package demo01_OOP;
public class Demo01StudentTest {
public static void main(String[] args) {
//1:导包:在类的所有代码之前导包,引入要使用的类型
//2:创建对象: 根据Student类,创建了一个名为student的对象
Demo01Student student = new Demo01Student();
//3. 使用其中的成员变量:
System.out.println(student.name);
System.out.println(student.age);
//改变对象当中的成员变量数值内容,将右侧的字符串,赋值交给student对象当中的name成员变量
student.name = "张三";
student.age = 888;
//使用其中的成员变量:
System.out.println(student.name);
System.out.println(student.age);
// 4. 使用对象的成员方法,格式:对象名.成员方法名()
student.eat();
student.sleep();
student.study();
}
}
代码执行后的结果

关于对象的几点注意事项
- 每个对象的成员变量都保存在内存的堆内存中,独立存在,互不影响。
- 在栈内存中运行的方法,遵循"先进后出,后进先出"的原则。对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息 只保存一份,节约内存空间。
- 对象是引用类型,当使用一个对象类型作为方法的参数或者返回值,传递的是对象的内存地址值
成员变量和局部变量区别
变量根据定义位置的不同,我们给变量起了不同的名字。如下图所示:

在类中的位置不同 (重点)
- 成员变量:类中,方法外
- 局部变量:方法中或者方法声明上(形式参数)
作用范围不一样(重点)
- 成员变量:类中
- 局部变量:方法中
初始化值的不同 (重点)
- 成员变量:有默认值
- 局部变量:没有默认值。必须先定义,赋值,最后使用
在内存中的位置不同
- 成员变量:堆内存
- 局部变量:栈内存
生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
成员变量的默认值

