全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-08 6 分钟 ✍️ juanwangdev

类与对象

类与对象是Java面向对象编程的基础概念。

类的概念

什么是类

类是对象的模板/蓝图,定义了对象的属性和行为。

Java
// 定义一个类
public class Person {
    // 属性(成员变量)
    String name;
    int age;
    
    // 行为(方法)
    public void speak() {
        System.out.println("我叫" + name);
    }
    
    public void eat() {
        System.out.println(name + "正在吃饭");
    }
}

类的组成

  • 属性:描述对象特征的变量(成员变量)
  • 方法:描述对象行为的函数(成员方法)

对象的概念

什么是对象

对象是类的实例,具有类定义的属性和行为。

Java
// 创建对象
Person person = new Person();

// 使用对象
person.name = "张三";
person.age = 25;
person.speak();  // 输出:我叫张三
person.eat();    // 输出:张三正在吃饭

创建对象语法

Java
// 语法:类名 对象名 = new 类名();
Person p1 = new Person();
Person p2 = new Person();

// p1和p2是两个独立的对象

类与对象关系

关系图解

Java
类(模板)           对象(实例)
  Person    →    Person p1 = new Person()
  Person    →    Person p2 = new Person()
  Person    →    Person p3 = new Person()

一个类可以创建多个对象

类与对象对比

对象
抽象的模板具体的实例
定义属性和方法拥有具体的属性值
不占用内存(静态)占用内存空间
可以创建多个对象一个类的具体实例
设计图纸按图纸造的产品

对象内存结构

对象在内存中

Java
Person p1 = new Person();
p1.name = "张三";
p1.age = 25;

Person p2 = new Person();
p2.name = "李四";
p2.age = 30;

内存示意:

Java
栈内存              堆内存
p1 → 地址1    →    Person对象1 {name="张三", age=25}
p2 → 地址2    →    Person对象2 {name="李四", age=30}

对象引用存储在栈,对象实体存储在堆。

对象引用

Java
Person p1 = new Person();
Person p2 = p1;  // p2指向p1同一个对象

p1.name = "张三";
System.out.println(p2.name);  // "张三"(同一对象)

// p1和p2是同一个对象的两个引用

类的定义规范

类命名规则

  • 使用大驼峰命名法(UpperCamelCase)
  • 类名应描述类的用途
  • 避免使用Java关键字
Java
// 正确命名
public class Student { }
public class OrderService { }
public class UserDao { }

// 错误命名(关键字)
public class class { }  // 编译错误

类的完整结构

Java
public class Student {
    // 1. 属性(成员变量)
    private String name;
    private int age;
    private double score;
    
    // 2. 构造方法
    public Student() { }
    
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 3. 方法
    public void study() {
        System.out.println(name + "正在学习");
    }
    
    public void showInfo() {
        System.out.println("姓名:" + name + ", 年龄:" + age);
    }
}

使用对象

访问属性

Java
Student student = new Student();

// 设置属性
student.name = "王五";
student.age = 20;

// 获取属性
String name = student.name;
int age = student.age;

调用方法

Java
Student student = new Student();
student.name = "赵六";

// 调用方法
student.study();     // 输出:赵六正在学习
student.showInfo();  // 输出:姓名:赵六, 年龄:18

null引用

null表示无对象

Java
Person p = null;  // p不指向任何对象

// 错误:空指针异常
p.name = "张三";  // NullPointerException
p.speak();        // NullPointerException

使用null引用访问属性或方法会抛NullPointerException。

空引用检查

Java
Person p = null;

if (p != null) {
    p.speak();  // 安全调用
}

// 或使用Optional(Java 8+)
Optional.ofNullable(p).ifPresent(person -> person.speak());

对象生命周期

创建到销毁

text
// 1. 创建对象
Person p = new Person();

// 2. 使用对象
p.name = "张三";
p.speak();

// 3. 对象变为垃圾
p = null;  // 原对象失去引用,等待GC回收

垃圾回收

当一个对象没有任何引用指向时,成为垃圾,由JVM自动回收。

text
Person p1 = new Person();
Person p2 = new Person();

p1 = p2;  // 原p1对象失去引用,成为垃圾

要点总结

  • 类是对象的模板,定义属性和方法
  • 对象是类的实例,通过new关键字创建
  • 类是抽象的,对象是具体的
  • 一个类可以创建多个对象
  • 对象引用在栈,对象实体在堆
  • 对象属性通过对象名.属性访问
  • 对象方法通过对象名.方法()调用
  • null表示不指向任何对象
  • 空引用访问会抛NullPointerException
  • 对象失去引用后成为垃圾,由GC回收

📝 发现内容有误?点击此处直接编辑

← 上一篇 构造方法
下一篇 → 继承
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库