类与对象
类是对象的模板,定义了对象的属性和行为;对象是类的实例,具有具体的状态和行为。理解类与对象是学习面向对象编程的第一步。
作用
面向对象编程通过类和对象的概念,使代码更加模块化、可重用和易于维护。它模拟了现实世界中的实体和关系,使程序更接近人类的思维方式。掌握类与对象的概念,将为后续学习封装、继承和多态打下基础。
图表说明
graph LR
OOP[面向对象编程] --> Class[类与对象]
OOP --> Features[三大特性]
Class --> Define["📦 类定义
public class Car {
// 属性
// 方法
}"]
Class --> Instance["🔄 对象实例化
Car myCar = new Car();"]
Features --> Encapsulation["🔒 封装
- private修饰属性
- public getter/setter"]
Features --> Inheritance["🎁 继承
- extends关键字
- super调用父类
- 方法重写"]
Features --> Polymorphism["🎭 多态
- 方法重载
- 父类引用指向子类对象
- 接口实现"]
Define --> Attribute["属性
String color;
int speed;"]
Define --> Method["方法
void run() {
// 实现
}"]
Encapsulation --> AccessControl["访问控制
public > protected > 默认 > private"]
Inheritance --> Override["方法重写规则
1. 相同方法名和参数
2. 返回值类型相同或子类
3. 访问权限不能更严格"]
Polymorphism --> Interface["接口多态
interface Drivable {
void drive();
}"]
例子
public class ClassObjectDemo {
public static void main(String[] args) {
// 创建对象
Car myCar = new Car("Toyota", "Red");
// 访问属性
System.out.println("品牌: " + myCar.getBrand());
System.out.println("颜色: " + myCar.getColor());
// 调用方法
myCar.accelerate(30);
System.out.println("当前速度: " + myCar.getSpeed());
myCar.brake(10);
System.out.println("刹车后速度: " + myCar.getSpeed());
// 对象比较
Car anotherCar = new Car("Toyota", "Red");
System.out.println("相同品牌颜色: " + myCar.equals(anotherCar));
}
}
class Car {
// 成员变量
private String brand;
private String color;
private int speed;
// 构造方法
public Car(String brand, String color) {
this.brand = brand;
this.color = color;
this.speed = 0;
}
// 成员方法
public void accelerate(int increment) {
this.speed += increment;
}
public void brake(int decrement) {
this.speed = Math.max(0, this.speed - decrement);
}
// 访问器方法
public String getBrand() {
return this.brand;
}
public String getColor() {
return this.color;
}
public int getSpeed() {
return this.speed;
}
// 重写equals方法
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Car car = (Car) obj;
return brand.equals(car.brand) && color.equals(car.color);
}
}
详细说明
-
类的组成:
- 成员变量:描述对象的属性,如汽车的颜色、速度
- 构造方法:初始化对象,设置初始状态
- 成员方法:定义对象的行为,如加速、刹车
- 访问修饰符:控制属性和方法的访问权限
-
对象的特点:
- 状态:由成员变量的值决定,如汽车当前的速度
- 行为:由成员方法定义,如汽车的加速和刹车
- 标识:每个对象都是唯一的,可以通过equals方法比较
-
核心概念:
- 封装:通过访问修饰符控制属性的访问
- 继承:通过extends关键字实现代码复用
- 多态:通过方法重写实现不同行为
注意事项
- 类名使用大驼峰命名法,如Car、Student
- 成员变量通常私有(private),通过方法访问
- 提供公共(public)访问方法,控制数据访问
- 重写equals()必须同时重写hashCode()
-
考虑实现toString()方法,方便调试
クラスはオブジェクトの設計図であり、オブジェクトはクラスの実例です。オブジェクト指向プログラミングでは、クラスとオブジェクトを使用して、コードの再利用性と保守性を向上させます。