0
点赞
收藏
分享

微信扫一扫

Java学习日记---类与对象(上)

伽马星系 2022-04-07 阅读 58
java

一.引出类与对象

 问:如果要求输出小明、小红等人的信息,其中相关信息有姓名、年龄、性别、身高等。如何写相关程序?

        1.用多个变量定义这些信息:

String Mname = "小明";
int Mage = 22;
char Mgender = '男';

String Hname = "小红";
int Hage = 22;
char Hgender = '女';

        2.用数组来表示

String M = {"小明", "22", "男"};
String H = {"小红", "22", "女"};

上面的两种方式实现存在的问题:

        1.如果想再添加几个属性,如星座、爱好等。那就需再定义变量来存储人的信息,一个人的信息被拆解成多个变量,小明小红相关信息数据的统一被割裂了,显然不利于数据的管理。

        2.用数组来定义显然变量定义变少了,但是下标与属性之间的对应关系也需要声明,十分麻烦。

引出类这个概念:

        将小明小红的信息共同点提取,抽象成概念,即人类。

        小明和小红就是对人类的引用,小明和小红就是对象。

二.类与对象

        类是抽象的、概念的,代表某一类事物,如人类、猫类;它是数据类型

        对象是具体的、实际的,代表一个具体事物,即实例

        类是对象的模板,对象是类的一个个体,对应一个实例

三.属性

        属性也可以叫成员变量、字段,它是类的一个组成部分,可以理解为它是描述某类事物的特征。

        1.属性定义同变量:访问修饰符 属性类型 属性名称

        2.属性的定义类型可以是基本数据类型,也可以是引用类型

        3.属性如果不赋值,同数组一样有相同的默认值。

四.创建对象

        1.先声明后分配空间即创建

//设有个Person类
Person p;
p = new Person();

        2.直接创建

Person p = new Person();

访问对象属性:对象名.属性名

        3.对象在内存的情况:

先分析Java的内存:

栈:一般存放基本数据类型(局部变量)

堆:存放对象、数组等

方法区:常量池(字符串、常量),类加载信息

结合代码及示意图分析,有如下代码:

Cat cat = new Cat();
cat.name = "小白";
cat.age = 12;
cat.color = "白色";

流程:

        1.先加载类的信息(属性和方法信息),只会加载一次

        2.在堆中分配空间,进行默认初始化,如cat.name = null, cat.age = 0,cat.color = null;

        3.把地址赋给cat,cat就指向对象。PS:cat只是对象的引用,对象实际指的是在堆分配的这块空间。

        4.进行指定初始化,cat.name = "小白"......

 

 

举报

相关推荐

0 条评论