类与对象
类(Class)是对象的"模板",对象(Object)是类的具体实例。Java 是一门纯面向对象的语言,所有代码都围绕类展开。
定义一个类
public class Student {
// 成员变量(属性)
String name;
int age;
// 构造方法:创建对象时调用
public Student(String name, int age) {
this.name = name; // this 指当前对象
this.age = age;
}
// 成员方法(行为)
public void introduce() {
System.out.println("我是 " + name + ",今年 " + age + " 岁");
}
}
创建和使用对象
Student stu = new Student("Alice", 18);
stu.introduce(); // 我是 Alice,今年 18 岁
System.out.println(stu.name);
new 关键字在堆上分配对象,并调用构造方法完成初始化。
构造方法
| 特点 | 说明 |
|---|---|
| 名称 | 必须与类名完全相同 |
| 返回值 | 没有返回值类型(连 void 都不写) |
| 默认构造 | 不写任何构造方法时,编译器自动生成无参构造 |
| 重载 | 可以定义多个参数不同的构造方法 |
public Student() {
this("未知", 0); // this(...) 调用本类其他构造方法
}
static 关键字
static 修饰的成员属于类本身,而非某个对象,所有实例共享一份:
public class Counter {
static int count = 0; // 类变量
int id;
public Counter() {
count++;
id = count;
}
public static void showCount() { // 类方法
System.out.println("共创建 " + count + " 个对象");
}
}
调用方式:Counter.showCount(),无需创建对象。注意 static 方法中不能直接使用非静态成员。
方法重载(Overload)
同一个类中,方法名相同、参数列表不同(个数或类型不同)即为重载:
public int add(int a, int b) { return a + b; }
public double add(double a, double b) { return a + b; }