类与对象

类与对象

一、引入

  • 张老太养了两只猫:一只叫小白,三岁,白色;还有一只叫小花,五岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示猫的名字、年龄、颜色。
//使用变量来解决————>不利于数据的管理
//第一只猫信息
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)、数组等
  • 方法区:常量池(常量,比如字符串),类加载信息

创建对象的流程简单分析

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

练习题

  • b是null,就不是一个对象了,b.age会出现异常

六、属性/成员变量

基本介绍

  1. 从概念或叫法上看:成员变量 = 属性 = field
  2. 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象、数组)
class{
    int age;
    String name;
    String[] master;
}

注意事项和细节说明

  1. 属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;
  2. 属性的定义类型可以为任意类型,包含基本类型或引用类型
  3. 属性如果不赋值,有默认值,规则和数组一致
  4. 注意
Person p = new Person();
//new Person()是真正的对象空间!!!!!
//p只是对象的引用!!!

七、对象的创建和访问

如何创建对象

  1. 先声明再创建
Cat cat;//声明对象cat
cat = new Cat();//创建,new Cat()才是真正创建了空间
  1. 直接创建
Cat cat = new Cat();

如何访问属性

//对象名.属性名
cat.name;
cat.age;

本文章使用limfx的vscode插件快速发布