面向对象入门:用类描述世界
面向对象入门:用类描述世界
面向过程像菜谱:一步步做什么。面向对象像建模:先有「事物」,再让事物协作。
本周关键词:类、对象、封装、构造方法、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手记
学习是第一生产力。
如发现有错误欢迎指正,欢迎交流,接受反驳。 -- by不为 :)

浙公网安备 33010602011771号