类与对象

相关主线:面对对象的程序与设计(基础入门)封装子类与继承

基本概念

  • 类 (Class):对一组具有相同属性和行为的对象的抽象描述,是创建对象的模板。
  • 对象 (Object):类的具体实例,具有状态(属性)和行为(方法)。
  • 类使用 class 关键字定义,对象通过 new 关键字创建。

类的定义

  • 语法格式:
    [修饰符] class 类名 {
        // 属性(成员变量)
        // 构造方法
        // 方法
    }
  • 属性:描述对象的状态,也称为成员变量、字段(field)。
  • 方法:描述对象的行为。

成员变量

  • 定义在类内部、方法外部的变量。
  • 可以是基本数据类型或引用类型。
  • 默认初始化值:
    • 数值类型(int, double 等):0 或 0.0
    • boolean:false
    • char:‘\u0000’
    • 引用类型:null

方法

  • 定义类中的行为,语法:
    [修饰符] 返回类型 方法名(参数列表) {
        // 方法体
        return 返回值; // 如果返回类型为 void,可省略
    }
  • void 表示无返回值。
  • 方法可以重载(Overloading):同一类中方法名相同但参数列表不同。

构造方法

  • 特殊方法,用于初始化新创建的对象。
  • 名称必须与类名完全相同,没有返回类型(甚至不能写 void)。
  • 如果没有显式定义构造方法,编译器会自动提供一个无参构造方法(默认构造方法)。
  • 可以重载,提供不同的初始化方式。

示例

public class Student {
    String name;
    int age;
 
    // 无参构造
    public Student() {
    }
 
    // 有参构造
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

创建对象

  • 使用 new 关键字 + 构造方法:
    类名 对象名 = new 类名(参数);
  • 创建对象的过程:
    1. 在堆内存中分配空间。
    2. 初始化成员变量(默认值或显式初始值)。
    3. 执行构造方法中的代码。
    4. 返回对象的引用(地址)赋值给变量

对象的使用

  • 通过 . 运算符访问对象的属性和方法:
    Student s = new Student("张三", 19);
    System.out.println(s.name);    // 访问属性
    s.study();                     // 调用方法

引用与对象

  • 引用类型变量存储的是对象的地址(引用),而不是对象本身。
  • 基本类型变量直接存储值。
  • 多个引用可以指向同一个对象,通过其中一个引用修改对象状态会影响所有引用。
  • 当没有任何引用指向一个对象时,该对象成为垃圾,由 JVM 的垃圾回收器回收(GC)。

局部变量 vs 成员变量

对比项成员变量局部变量
定义位置类内、方法外方法内、代码块内、参数列表
生命周期随对象创建而存在,对象销毁而消失随方法调用而存在,方法结束而消失
默认值有(如 0, null 等)无,必须显式初始化
修饰符可以有权限修饰符(public, private 等)不能有权限修饰符

this 关键字

  • this:当前**对象(类)**的引用。
  • 常见用途:
    • 区分成员变量与局部变量(如 this.name = name)。左为成员,右为局部
    • 调用当前类的其他构造方法:this(参数)(必须放在构造方法第一行)。
    • 返回当前对象:return this

常见设计原则

  • 高内聚、低耦合:类的职责明确,对外暴露最小接口。
  • 封装:使用 private 隐藏内部细节,通过 public 的 getter/setter 访问私有属性。详见封装
  • 构造方法应保证对象创建后处于合法状态。

面对对象的程序与设计(基础入门) 封装 访问控制修饰符 static关键字 Object类