类和对象:面向对象编程的核心

1. 类(Class):对象的蓝图

定义与作用

  • 类是现实实体的代码抽象,用于定义对象的数据结构(属性)行为逻辑(方法)
  • 如同建筑图纸决定房屋结构,类决定对象的内部构造与功能。

核心组成

public class Person {  
    // 字段(属性)  
    private String name;  
    private int age;  

    // 构造函数  
    public Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  

    // 方法(行为)  
    public void introduce() {  
        System.out.println("Hi, I'm " + name);  
    }  
}  
  • 字段:存储对象状态(如name, age)。
  • 构造函数:初始化对象(与类同名,无返回值)。
  • 方法:定义对象行为(如introduce())。

类模板示意图

image-20250729093456657


2. 对象(Object):类的实例

特性与创建

  • 对象是类的具体实现,每个对象拥有独立的状态(属性值)但共享行为逻辑(方法)。

  • 通过

    new
    

    关键字实例化:

    Person john = new Person("John", 22);  // 创建对象  
    john.introduce();                      // 调用方法 → 输出:"Hi, I'm John"  
    

对象独立性

  • 相同类 → 不同对象:

    Person mary = new Person("Mary", 28);  // 独立对象,属性值不同  
    
  • 每个对象的内存空间独立,修改john的属性不影响mary


3. 构造函数:对象初始化器

关键作用

  • 确保对象创建时属性被正确初始化,避免无效状态(如age=0)。

  • 两种类型:

    类型特点示例
    默认构造函数无参数,自动生成(若未定义)Person p = new Person();
    参数化构造函数接收参数定制对象初始状态Person p = new Person("Alice", 30);

参数化构造函数示例

public Person(String name, int age) {  
    this.name = name;  // this.name:引用实例变量  
    this.age = age;    // name:构造函数参数  
}  

使用场景

  • 创建对象时直接注入属性值:

    Person harry = new Person("Harry", 35); // 一步完成初始化  
    

4. 作用域与this关键字

变量作用域规则

变量类型可见范围生命周期
局部变量仅在声明的方法内方法开始 → 方法结束
实例变量类内所有方法对象创建 → 对象销毁

变量遮蔽(Shadowing)问题

  • 当局部变量与实例变量同名时,局部变量优先:

    public void setName(String name) {  
        name = name; // ❌ 错误:局部变量name自赋值  
        this.name = name; // ✅ 正确:this.name指向实例变量  
    }  
    

this关键字的用途

  1. 解决变量遮蔽(如上例)。
  2. 调用其他构造函数(如this())。
  3. 传递当前对象(如obj.method(this))。

5. 综合实践:LED类示例

类设计

public class LED {  
    private boolean isOn;        // 状态属性  
    private String color;        // 颜色属性  

    // 参数化构造函数  
    public LED(String color) {  
        this.isOn = false;  
        this.color = color;  
    }  

    // 行为方法  
    public void turnOn() {  
        if (!isOn) isOn = true;  
    }  
    public String getColor() {  
        return color;  
    }  
}  

对象使用

LED redLED = new LED("red");  // 创建红色LED对象  
redLED.turnOn();              // 调用方法改变状态  
System.out.println(redLED.getColor()); // 输出:"red"  

6. 核心概念总结

概念核心要点
类(Class)对象的模板,定义属性和方法。
对象(Object)类的实例,拥有独立属性值,共享方法逻辑。
构造函数初始化对象属性,确保对象有效状态。
this关键字解决变量遮蔽,明确指向当前对象的实例变量。
作用域局部变量(方法内) vs 实例变量(对象生命周期)。

关键认知

  • 是静态定义,对象是动态实体。
  • 通过new实例化对象时,JVM为对象分配独立内存空间,存储属性值。
  • 方法代码在内存中仅存一份,被所有对象共享(节省内存)。

通过结合类与对象的设计,Java实现了对现实世界的高度抽象与灵活建模。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值