在 Java 中,类(Class) 和对象(Object) 是面向面向对象编程(OOP)的核心概念,两者紧密关联但本质不同。简单来说:类是对象的 “模板” 或 “蓝图”,而对象是类的 “实例” 或 “具体实现”

一、类(Class):抽象的 “模板”

类是对一类事物共同特征(属性)和行为(方法)的抽象描述,它不特指某个具体的事物,而是定义了这类事物 “是什么” 和 “能做什么”。

举例:

现实中 “汽车” 是一个抽象概念(类):

  • 属性(特征):颜色、品牌、排量、价格等(描述 “是什么”)。
  • 行为(操作):启动、加速、刹车、鸣笛等(描述 “能做什么”)。

在 Java 中,用代码定义 “汽车类”:

// 汽车类(抽象模板)
public class Car {
    // 属性(特征):类中定义的变量
    String color;   // 颜色
    String brand;   // 品牌
    double price;   // 价格

    // 方法(行为):类中定义的函数
    void start() {  // 启动
        System.out.println(brand + "启动了");
    }

    void accelerate() {  // 加速
        System.out.println(brand + "正在加速");
    }
}

这个Car类仅描述了 “汽车” 的共同属性和行为,不代表任何一辆具体的车。

二、对象(Object):具体的 “实例”

对象是类的具体实现,是根据类的模板创建的 “实体”。一个类可以创建多个对象,每个对象都拥有类中定义的属性和方法,但属性的值可以不同(即 “个性”)。

举例:

根据 “汽车类(Car)” 可以创建具体的汽车(对象):

  • 一辆 “红色、特斯拉、价格 30 万” 的车(对象 1)。
  • 一辆 “黑色、宝马、价格 50 万” 的车(对象 2)。

在 Java 中,通过new关键字创建对象(实例化):

public class Test {
    public static void main(String[] args) {
        // 创建对象1:根据Car类模板,实例化一辆具体的车
        Car tesla = new Car();
        tesla.color = "红色";    // 为对象的属性赋值(个性)
        tesla.brand = "特斯拉";
        tesla.price = 300000;
        tesla.start();  // 调用对象的方法:输出“特斯拉启动了”

        // 创建对象2:另一辆具体的车
        Car bmw = new Car();
        bmw.color = "黑色";
        bmw.brand = "宝马";
        bmw.price = 500000;
        bmw.accelerate();  // 调用对象的方法:输出“宝马正在加速”
    }
}

这里的teslabmw就是Car类的两个对象,它们都遵循Car类的定义(有颜色、品牌,能启动、加速),但属性值不同,是具体的实体。

三、类与对象的核心关系

  1. 类是对象的模板,对象是类的实例

    • 类定义了 “共性”(属性和方法的结构),对象则是这些共性的 “具体体现”(属性有具体值,方法可实际执行)。
    • 类比:类是 “房子设计图”,对象是根据设计图盖出的 “具体房子”(可以盖多栋,每栋内部装修不同)。
  2. 类不占用内存,对象占用内存

    • 类是一种 “抽象定义”,仅在编译时存在,不占用运行时内存。
    • 对象是类的实例化结果,创建对象时,JVM 会在堆内存中为其分配空间(存储属性值等)。
  3. 一个类可以创建多个对象

    • 类是 “抽象概念”,对象是 “具体个体”。例如,Car类可以创建无数辆不同的车(对象),每辆车都是Car的实例。

四、总结

  • :抽象的 “模板”,定义了一类事物的属性和行为(“是什么”“能做什么”)。
  • 对象:类的 “具体实例”,根据类的模板创建,拥有独特的属性值,可执行类中定义的方法。

简单说:类是 “概念”,对象是 “实物”;类是 “图纸”,对象是 “产品”。理解类与对象的关系,是掌握面向对象编程的基础。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐