一次性搞定类和对象上篇(Java)
类是用来对一个实体进行描述的,来描述这个实体(火锅店)有什么属性(菜单),有哪些功能(运营手册),描述完计算机就可以识别了。在java中需要用到class关键字。具体如下field;//属性method;//行为对象就像是一家 “正在营业的具体餐厅”,这家餐厅具有我们上面说的类的菜单和运营手册,也就是成员变量和成员方法。好啦~~,上半部分的内容就告一段落了,这是类和对象的基础,相当重要呢,我们下半
·
前言
在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方法。
toString方法
打印结果
结语
好啦~~,上半部分的内容就告一段落了,这是类和对象的基础,相当重要呢,我们下半部分再见啦,如有问题,欢迎指正,共同进步!!
- 我是Dylan,下期见~
更多推荐
所有评论(0)