> 技术文档 > 一次性搞定类和对象上篇(Java)_类与对象在代码

一次性搞定类和对象上篇(Java)_类与对象在代码


前言

在JAVA的学习过程中,类和对象一直是新手小白的痛难点,今天结合我的学习经验,从 “想吃火锅” 到 “彻底理解类与对象” 事不宜迟,让我们直接发车~~


什么是类

  • 类是用来对一个实体进行描述的,来描述这个实体(火锅店)有什么属性(菜单),有哪些功能(运营手册),描述完计算机就可以识别了。

类的定义格式

在java中需要用到class关键字。具体如下

class HotpotRestaurant {field;//属性method;//行为 }

类中包括什么?

  • 从上面的定义格式可以看出一个类中包括属性和行为,他们又叫成员变量和成员方法
public class HotpotRestaurant {//成员变量public String meat;//肉类public String soup;//锅底public String vegetable;//蔬菜public int people;//人数//成员方法public void act(){System.out.println(\"吃火锅\")}}
  • 注意事项
  • 类名使用大驼峰进进行定义。
  • 成员前面统一使用public,后面会详细解释。 方法不带用static,我们后面会详细解释。
  • 一般一个文件中自定义一个类
  • 类名要与文件名字相同

对象

什么是对象?

  • 对象就像是一家 “正在营业的具体餐厅”,这家餐厅具有我们上面说的类的菜单和运营手册,也就是成员变量和成员方法。

比喻理解

  • 我们可以通过类来创建一个对象。就像是连锁点一样。类就像是总部,一个提供菜单,运营的指挥官。创建出来的对象就像是我们到店的加盟店了,在这里我们才可以享受美味~~,如果想吃新品和更好的体验,必须总部,也就是类中进行定义新的菜单和运营策略(成员变量和成员方法)

类的实例化

  • 定义一个类,就相当于在计算机中定义了一个新的类型(火锅店实体),用类这个类型创建对象的过程,成为类的实例化。
  • 同一个类(总部)可以实例化多个对象(实体店)

代码如下(示例):

public class test { public static void main(String[] args) { //类的创建/实例化 HotpotRestaurant hotpotRestaurant= new HotpotRestaurant(); //访问对象中的变量 hotpotRestaurant.meat=\"麻辣牛肉\"; hotpotRestaurant.soup=\"红汤锅\"; hotpotRestaurant.people =6; hotpotRestaurant.act(); HotpotRestaurant hotpotRestaurant2= new HotpotRestaurant(); hotpotRestaurant2.meat=\"鲜鱼丸\"; hotpotRestaurant2.soup=\"番茄锅\"; hotpotRestaurant2.people =4; hotpotRestaurant2.act(); }}

简单小结

  • 类只是一个类似模型的东西,用来对实体进行描述,限定了成员变量。对象就是在这种模型下实例用交互的。
  • 类是一种自定义的类型。

this关键字

下面我定义一个date类来记录我吃火锅的时间,并进行初始化。

public class Date { public int year; public int month; public int day; public void setDay(int y,int m,int d){ year = y; month =m; day = d; } public void print(){ System.out.println(year+\"/\"+month+\"/\"+day); } public static void main(String[] args) { Date date1 =new Date(); date1.setDay(2025,7,22); date1.print(); }}
  • 思考:当我的形参和成员变量相同时候,会怎么样呢?为了避免这样的问题,我们需要在指向当前对象,也就是成员方法中对每个成员变量用this引用。
  • 就像是菜单中的菜品,在实体店A中有,在B中也有,用this来明确是我正在吃的这家店的菜。
public void setDay(int y,int m,int d){ this.year = y; this.month =m; this.day = d; } public void print(){ System.out.println(this.year+\"/\"+this.month+\"/\"+this.day); }

对象的构造

通过上面date的类,我们不难看出类中的成员变量通过set成员方法进行了初始化,一个一个写当然不方便,下面让我们一一介绍。

默认初始化

  • 不同数据类型类型都有自己的默认值

在这里插入图片描述

就地初始化

  • 就是在声明成员变量直接初始化

构造方法初始化

又称为构造器

  • 名字和类名相同,创建对象时编译器自动调用,在整个对象的生命周期中只调一次。
  • 基本格式:public + 类名
  • 调用时new后(直接初始化变量)
 public Date(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } public void print(){ System.out.println(this.year+\"/\"+this.month+\"/\"+this.day); } public static void main(String[] args) { Date date1 =new Date(2025,7,22); date1.print();
  • 注意!!
  • 如果用户没有显示定义,编译器会默认生成一份没有参数的构造方法。但是一旦定义显示构造方法就不再默认提供。
  • this()在构造函数中调用
public class HotpotRestaurant { // 成员变量:火锅店的基础属性 private String name; // 店名 private int tableCount; // 桌数 private String signaturePot; // 招牌锅底 // 构造方法1:最基础的构造(只需要店名) public HotpotRestaurant(String name) { this.name = name; this.tableCount = 10; // 默认10张桌 this.signaturePot = \"经典麻辣锅\"; // 默认招牌锅底 } // 构造方法2:需要店名+桌数(调用构造方法1简化代码) public HotpotRestaurant(String name, int tableCount) { this(name); // 调用上面的构造方法,传入店名,复用默认的锅底和桌数逻辑 this.tableCount = tableCount; // 单独修改桌数 } // 构造方法3:需要店名+桌数+招牌锅底(调用构造方法2进一步简化) public HotpotRestaurant(String name, int tableCount, String signaturePot) { this(name, tableCount); // 调用构造方法2,传入店名和桌数 this.signaturePot = signaturePot; // 单独修改招牌锅底 }

对象的打印

  • 如果直接打印对象的引用,输出的为地址。需要我们重写toString方法。

一次性搞定类和对象上篇(Java)_类与对象在代码toString方法

一次性搞定类和对象上篇(Java)_类与对象在代码打印结果

结语

好啦~~,上半部分的内容就告一段落了,这是类和对象的基础,相当重要呢,我们下半部分再见啦,如有问题,欢迎指正,共同进步!!

  • 我是Dylan,下期见~