面向对象入门:用类描述世界

面向对象入门:用类描述世界

面向过程像菜谱:一步步做什么。面向对象像建模:先有「事物」,再让事物协作。

本周关键词:类、对象、封装、构造方法、this

类与对象

  • 类(Class):图纸
  • 对象(Object):按图纸造出来的实例
public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void introduce() {
        System.out.println("我是" + name + ",今年" + age + "岁");
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        if (age > 0 && age < 150) {
            this.age = age;
        }
    }
}

使用:

Student s = new Student("小杨", 22);
s.introduce();

为什么要用 private + getter/setter?

这叫 封装:不让外界随便改内部数据。

比如年龄不能是 -1。把校验放在 setAge 里,对象自己守门,比每个调用方都写一遍 if 更安全。

构造方法

new Student(...) 时调用的就是构造方法。作用:对象出生时就把必要数据备齐。

public Student(String name, int age) {
    this.name = name;
    this.age = age;
}

this.name 指「当前对象的字段」,用来和参数 name 区分。

小项目:学生信息管理(内存版)v0.1

目标:在控制台完成「增删改查」的雏形(先做增和查也行)。

public class StudentManager {
    private Student[] students = new Student[100];
    private int count = 0;

    public void add(Student s) {
        if (count >= students.length) {
            System.out.println("已满");
            return;
        }
        students[count++] = s;
    }

    public void list() {
        for (int i = 0; i < count; i++) {
            students[i].introduce();
        }
    }
}

后面几周我们会用集合替换数组,再用数据库持久化。现在先把 对象协作 的感觉练出来。

本周练习清单

思考题

如果不用面向对象,只用方法和数组,也能做学生管理。那为什么还要 OOP?

参考答案方向:当数据和行为绑定在一起时,代码更好维护、更好扩展。 人多、需求变复杂时差异会非常明显。

写在最后

你在 Eden 区「new」出的每一个对象,都是世界模型的一块砖。下周我们让这些砖能 继承、多态、面向接口——代码开始真正「长」起来。


YoungGc · Eden手记
学习是第一生产力。

posted @ 2026-07-22 11:38  Eden手记  阅读(4)  评论(0)    收藏  举报