类与对象
类与对象
Java 是纯面向对象语言:程序的基本单元是「类」,运行时的基本单元是「对象」。理解两者关系,是整个 OOP 的地基。
类 = 蓝图
类描述「一类事物长什么样、能做什么」——字段(状态)+ 方法(行为):
public class Dog {
String name; // 字段:状态
int age;
void bark() { // 方法:行为
System.out.println(name + " 汪汪!");
}
}
Dog 本身不占运行内存,它只是一份定义。
对象 = 实例
用 new 依据类创建具体对象:
Dog d1 = new Dog(); // 堆上创建对象,d1 是引用
Dog d2 = new Dog(); // 另一个独立对象
d1、d2是两个独立的对象,各自有自己的name/age。- 引用变量存的是对象的地址,不是对象本身。
一句话:类是模板,对象是按模板造出来的实例。 同一个类可以造出任意多个对象。
交互实验:类定义构建器(ClassBuilder)
三步走:① 写类——把字段卡、方法卡点进类框;② new 对象——每个字段自动获得 Java 默认值;③ 访问成员——赋值语句只改实例内存,不改类本身。
类名(创建对象后锁定)
字段卡(点选进类框)
方法卡(点选进类框)
public class Student {
String name;
int age;
public void sayHi() {
}
}构造方法与 this
- 构造方法与类同名、无返回类型(连
void都没有),在new时初始化对象; - 可重载:同名、参数列表不同,支持多种创建方式;
this指代「当前对象」:区分同名的成员变量与局部变量,也可在构造方法首句调用其他重载构造方法(this(...))。
public class Dog {
String name;
int age;
Dog() { this("Rex", 1); } // 无参 → 委托给有参构造
Dog(String name, int age) {
this.name = name; // this 区分成员变量与参数
this.age = age;
}
void bark() { System.out.println(name + " 汪汪!"); }
}
Dog d1 = new Dog(); // 走无参构造(内部委托)
Dog d2 = new Dog("Fido", 3); // 走有参构造
封装:数据保护(预告)
面向对象的第一个支柱就是封装:把数据和操作它的代码捆绑进对象内部,属性用 private 隐藏、对外只暴露 public 受控入口(getter/setter),在方法里做校验后再改数据。访问控制符的细节与四种可见范围,将在下一课《封装与继承》中展开。
学习小测验
学习小测验
Q1
关于 Java 中「类」和「对象」,哪个说法正确?
Q2
执行 new Dog() 后发生了什么?
Q3
关于构造方法,正确的是( )
Q4
this 在构造方法首句 this("Rex", 1) 中的作用是( )
Q5
default(不写修饰符)与 protected 的关键区别是( )
Q6
把属性设为 private 并提供 public getter/setter 的目的是( )