一、引出
实例:一只猫的信息用多个属性拆开并将其对应
问题:现有的技术不利于效率的管理和效率低
二、概述
事物 => 对象(属性、行为)
如:小狗(【年龄、颜色】、【跑、叫】)
类是自定义的的数据类型
首先把所有猫的特性提取出来形成一个猫类的数据类型,然后创建很多很多猫类里面的猫
类就是一个大类,对象是一个具体的事物,如:人类是类和朴树是对象
总结:
(1)类:代表一类事物,比如人类,猫类,它是数据类型
(2)对象:代表具体事物,如人,猫,它是实例
(3)类是对象的模板,对象是类的一个个体
package chapter07.object01;
public class object01 {
public static void main(String[] args) {
//单独变量-->不利于数据管理,用三个变量把一只猫的信息拆开
// String cat1Name = "小白";
// String cat2Name = "小花";
//
// int cat1Age = 3;
// int cat2Age = 100;
//
// String cat1Color = "白色";
// String cat2Color = "花色";
//数组
// String[] act1 = {"小白", "3", "白色"}
//使用OOP面向对象解决,实例化一只猫
//1.new Cat()创建一只猫
//2.把创建的猫赋给cat1
//3.cat1就是一个对象
Cat cat1 = new Cat();//首先加载cat类的属性和行为信息到方法池,然后分配空间,最后把地址返回给cat
cat1.name = "小白";
cat1.age = 3;
cat1.color = "白色";
Cat cat2 = new Cat();
cat2.name = "小花";
cat2.age = 100;
cat2.color = "花色";
//怎么访问对象的属性
System.out.println("第1只猫的属性: " + cat1.name + " " + cat1.age + " " +cat1.color);
System.out.println("第2只猫的属性: " + cat2.name + " " + cat2.age + " " +cat2.color);
}
}
//使用面向对象的方法来解决养猫问题
//1. 定义一个猫类
//2. 确定猫类的属性和行为
//3. 实例化猫类
class Cat {
//属性
String name; //姓名
int age; //年龄
String color; //颜色
//行为
}
三、对象内存布局
注:字符串是引用类型,常量入堆,字符串入常量池
- 引用类型对象:cat指向一个地址,然后顺着地址找到堆中的地址块,可以找到这个对象的各个属性
- 对象成员:基本数据类型如int,直接在那个地址的arr[0]中存储
- 对象成员:引用数据类型如字符串,那么堆中有各个地址指向方法区中的引用类型
- 引用类型数组:arr指向一个地址,然后顺着地址找到堆中的地址块,可以找到这个数组存储的地址快
- 数组成员:基本数据类型如int,直接在那个地址的arr[0]中存储
- 数组成员:引用数据类型如字符串,那么堆中有各个地址指向方法区中的引用类型
- 顺序:栈 => 堆 => 方法