类与对象
一、引入
- 张老太养了两只猫:一只叫小白,三岁,白色;还有一只叫小花,五岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示猫的名字、年龄、颜色。
//使用变量来解决————>不利于数据的管理
//第一只猫信息
String cat1Name = "小白";
int cat1Age = 3;
String cat1Color = "白色";
//第二只猫信息
String cat2Name = "小花";
int cat2Age = 5;
String cat2Color = "花色";
//使用数组来解决
//(1)数据类型体现不出来
//(2)只能通过下标获取信息,造成变量名字和内容的对应关系不明确
//(3)不能体现猫的行为
String[] cat1 = {"小白","3","白色"};
String[] cat2 = {"小花","5","花色"};
- 使用现有技术不能完美解决新的需求——>引入类与对象
二、介绍
- 一个程序就是一个世界,有很多事务(对象[属性,行为])
- 狗就是一个对象,属性是它自身的信息,行为是它能够做的事情

三、类与对象的关系示意图
说明:
- 类是一种数据类型,比如:cat和int
- 对象就是一个具体的实例,实例可以有很多个
- 人类也是一个类,每个人就是一个实例对象
- 从猫类到对象,有几种说法:1、创建一个对象;2、实例化一个对象;3、把类实例化...
//用面向对象的方式来解决养猫问题
//定义一个猫类Cat-->自定义数据类型
class Cat{
String name;
int age;
String color;
}
四、类和对象的区别和联系
- 类是抽象的,概念的,代表一类事物,比如人类、猫类....,即类是数据类型
- 对象是具体的,实际的,代表一个具体事物,即是实例
- 类是对象的模板,对象是类的一个个体,对应一个实例
五、类和对象的内存分配机制
Java内存的结构分析
- 栈:一般存放基本数据类型(局部变量)
- 堆:存放对象(Cat cat)、数组等
- 方法区:常量池(常量,比如字符串),类加载信息
创建对象的流程简单分析

- 首先加载Person类信息(属性和方法信息,只会加载一次)
- 在堆中分配空间,进行默认初始化
- 把地址赋给p,p就指向对象
- 进行指定初始化,比如 p. name = "jack" p.age = 10
练习题

- b是null,就不是一个对象了,b.age会出现异常
六、属性/成员变量
基本介绍
- 从概念或叫法上看:成员变量 = 属性 = field
- 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象、数组)
class{
int age;
String name;
String[] master;
}
注意事项和细节说明
- 属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;
- 属性的定义类型可以为任意类型,包含基本类型或引用类型
- 属性如果不赋值,有默认值,规则和数组一致
- 注意
Person p = new Person();
//new Person()是真正的对象空间!!!!!
//p只是对象的引用!!!
七、对象的创建和访问
如何创建对象
- 先声明再创建
Cat cat;//声明对象cat
cat = new Cat();//创建,new Cat()才是真正创建了空间
- 直接创建
Cat cat = new Cat();
如何访问属性
//对象名.属性名
cat.name;
cat.age;
本文章使用limfx的vscode插件快速发布