Java 对象和类
面向对象编程把现实事物抽象成「类」与「对象」:类是模板,对象是按模板造出的具体个体。例如「学生」是类,张三就是学生类的一个对象。Java 程序几乎都由类和对象组成。
面向对象思想
用类描述事物的两个侧面:
- 属性:用成员变量表示,如学生的姓名、学号。
- 行为:用成员方法表示,如学生上课、考试。
属性与行为封装在一个类里,就能反复 new 出许多对象,代码因此可复用、易维护。
类的定义
类由成员变量(属性)与成员方法(行为)组成,例如一个 Cat 类:
class Cat {
String name; // 成员变量:名字
int age; // 成员变量:年龄
void meow() { // 成员方法:喵喵叫
System.out.println(name + ":喵~");
}
}
以上片段需放进 .java 文件,配合带 main 方法的类一起编译使用。
创建对象并访问成员
用 new 创建对象,再用「对象.成员」给成员变量赋值或调用方法:
// 片段需放进 main 方法中运行(Cat 类见上一小节)
Cat c = new Cat(); // new 创建对象
c.name = "小咪"; // 访问成员变量(赋值)
c.age = 2;
c.meow(); // 调用成员方法
// 输出:小咪:喵~
对象引用的含义
变量 c 保存的是对象的引用(内存地址),不是对象本身,因此两个引用可以指向同一个对象;而每次 new 都会产生彼此独立的新对象:
// 片段需放进 main 方法中运行
Cat a = new Cat();
Cat b = a; // a、b 指向同一个对象
b.name = "大黄";
System.out.println(a.name); // 输出:大黄
Cat s1 = new Cat(); // 每次 new 都是独立的新对象
Cat s2 = new Cat();
s1.name = "A";
s2.name = "B";
System.out.println(s1.name + " 与 " + s2.name); // 输出:A 与 B
this 关键字
方法参数与成员变量同名时,用 this.成员变量 明确表示「当前对象的成员变量」:
class Dog {
String name;
void setName(String name) {
this.name = name; // 左边是成员变量,右边是参数
}
}
public class TestDog {
public static void main(String[] args) {
Dog d = new Dog();
d.setName("旺财");
System.out.println(d.name); // 输出:旺财
}
}
局部变量与成员变量的区别
| 对比项 | 成员变量 | 局部变量 |
|---|---|---|
| 声明位置 | 类内、方法外 | 方法或代码块内 |
| 默认值 | 有(0 / null / false) | 无,必须初始化 |
| 生命周期 | 随对象创建与销毁 | 随方法调用结束而销毁 |
| 归属 | 属于对象 | 属于所在方法 |
类是模板、对象是实例。用 new 创建对象、用「点」访问成员、this 指向当前对象、多个对象各自独立——这就是 Java 面向对象编程的入门心法。