Java是纯面向对象的编程语言,“类与对象”是Java的核心思想,也是新手入门的第一道坎。很多新手分不清“类”和“对象”的关系,看不懂代码结构,导致后续学习接口、继承时更吃力。
今天用“现实世界类比+极简代码”,把Java的类与对象拆解清楚,新手看完就能理解“什么是类、什么是对象、如何使用”,轻松跨过面向对象的第一道门槛~
一、核心概念:类与对象的关系(类比理解)
先举个现实中的例子:
-
类:“手机”这个抽象概念(包含手机的属性:品牌、型号、价格;行为:打电话、发短信);
-
对象:你手上的iPhone 15(具体的一个手机,有明确的品牌、型号、价格,能执行打电话、发短信的行为)。
总结:
-
类 = 抽象的模板(定义属性和行为);
-
对象 = 模板的具体实例(拥有模板的属性和行为);
-
面向对象编程 = 先定义“类”这个模板,再创建“对象”来使用。
二、第一步:定义类(创建模板)
1. 类的语法结构
public class 类名 {
// 1. 成员变量(属性):描述类的特征
数据类型 变量名;
// 2. 成员方法(行为):描述类的功能
public 返回值类型 方法名(参数列表) {
方法体;
return 返回值; // 无返回值则写void,省略return
}
}
-
类名:首字母大写,见名知意(如Phone、Person);
-
成员变量:定义在类里、方法外,无需初始化(有默认值);
-
成员方法:和之前学的普通方法类似,去掉static(新手先记这个规则)。
2. 示例:定义Phone类
// 定义手机类(模板)
public class Phone {
// 成员变量(属性)
String brand; // 品牌
String model; // 型号
double price; // 价格
// 成员方法(行为1:打电话)
public void call(String name) {
System.out.println("用" + brand + "手机给" + name + "打电话");
}
// 成员方法(行为2:发短信)
public void sendMessage(String content) {
System.out.println("发送短信:" + content);
}
}
三、第二步:创建对象(实例化模板)
定义完类后,需要创建对象才能使用类的属性和方法,语法:
类名 对象名 = new 类名();
示例:创建Phone对象并使用
public class TestPhone {
public static void main(String[] args) {
// 1. 创建对象(实例化Phone类)
Phone myPhone = new Phone();
// 2. 给对象的属性赋值(设置具体的特征)
myPhone.brand = "苹果";
myPhone.model = "iPhone 15";
myPhone.price = 5999.0;
// 3. 访问对象的属性(查看特征)
System.out.println("手机品牌:" + myPhone.brand);
System.out.println("手机型号:" + myPhone.model);
System.out.println("手机价格:" + myPhone.price);
// 4. 调用对象的方法(执行行为)
myPhone.call("张三"); // 输出:用苹果手机给张三打电话
myPhone.sendMessage("晚上一起吃饭"); // 输出:发送短信:晚上一起吃饭
// 5. 可创建多个对象(多个具体的手机)
Phone yourPhone = new Phone();
yourPhone.brand = "华为";
yourPhone.model = "Mate 60";
yourPhone.price = 6999.0;
yourPhone.call("李四"); // 输出:用华为手机给李四打电话
}
}
四、进阶:构造方法(初始化对象属性)
新手发现:每次创建对象后,都要逐个赋值属性,太麻烦!
构造方法可以解决这个问题——创建对象时直接给属性赋值,简化代码。
1. 构造方法的规则
-
方法名必须和类名完全一致(包括大小写);
-
没有返回值类型(连void都不写);
-
可以重载(多个构造方法,参数不同)。
2. 示例:给Phone类添加构造方法
public class Phone {
// 成员变量
String brand;
String model;
double price;
// 无参构造方法(默认存在,写不写都有)
public Phone() {
}
// 有参构造方法(创建对象时直接赋值)
public Phone(String brand, String model, double price) {
this.brand = brand; // this代表当前对象的属性
this.model = model;
this.price = price;
}
// 成员方法(不变)
public void call(String name) {
System.out.println("用" + brand + "手机给" + name + "打电话");
}
public void sendMessage(String content) {
System.out.println("发送短信:" + content);
}
}
3. 使用构造方法创建对象
public class TestPhone {
public static void main(String[] args) {
// 使用有参构造创建对象,直接赋值属性
Phone myPhone = new Phone("苹果", "iPhone 15", 5999.0);
myPhone.call("张三"); // 输出:用苹果手机给张三打电话
Phone yourPhone = new Phone("华为", "Mate 60", 6999.0);
System.out.println(yourPhone.model); // 输出:Mate 60
}
}
五、新手避坑指南
-
类名首字母必须大写(如Phone,不是phone);
-
创建对象必须用
new关键字(不能直接写Phone myPhone;,这样只是声明,未创建对象); -
this关键字:只能用在成员方法/构造方法中,代表当前对象; -
无参构造:如果写了有参构造,无参构造会消失,需要手动写出来(否则创建无参对象会报错)。
最后
面向对象的核心是“类(模板)→ 对象(实例)”,新手先掌握“定义类-创建对象-调用属性/方法-构造方法”这四个步骤,后续再学习封装、继承、多态就会轻松很多。
可以尝试自己定义一个“Person”类(属性:姓名、年龄;行为:吃饭、跑步),创建对象并调用方法,巩固今天的知识点。