类和对象

1. 概述

在面向对象编程(OOP)中,类和对象是两个核心概念。类是对象的蓝图或模板,而对象是类的实例。通过类,我们可以定义对象的属性和行为。

2. 类的定义

类是用于创建对象的模板。它定义了对象的属性和方法。类的定义通常包括以下几个部分:

  • 类名:类的名称,通常以大写字母开头。
  • 属性:类的成员变量,用于存储对象的状态。
  • 方法:类的成员函数,用于定义对象的行为。

2.1 类的基本结构

public class Car {
    // 属性
    String brand;
    String model;
    int year;

    // 方法
    public void startEngine() {
        System.out.println("Engine started!");
    }

    public void stopEngine() {
        System.out.println("Engine stopped!");
    }
}

在这个例子中,Car 是一个类,它有三个属性:brand、model 和 year。它还有两个方法:startEngine 和 stopEngine。

3. 对象的创建

对象是类的实例。要创建一个对象,我们需要使用 new 关键字。

3.1 创建对象

public class Main {
    public static void main(String[] args) {
        // 创建 Car 类的对象
        Car myCar = new Car();

        // 访问对象的属性
        myCar.brand = "Toyota";
        myCar.model = "Camry";
        myCar.year = 2020;

        // 调用对象的方法
        myCar.startEngine();
        myCar.stopEngine();
    }
}

在这个例子中,我们创建了一个 Car 类的对象 myCar,并设置了它的属性。然后,我们调用了 startEngine 和 stopEngine 方法。

4. 构造器

构造器是用于初始化对象的特殊方法。它与类同名,并且没有返回类型。

4.1 构造器的定义

public class Car {
    String brand;
    String model;
    int year;

    // 构造器
    public Car(String brand, String model, int year) {
        this.brand = brand;
        this.model = model;
        this.year = year;
    }

    public void startEngine() {
        System.out.println("Engine started!");
    }

    public void stopEngine() {
        System.out.println("Engine stopped!");
    }
}

4.2 使用构造器创建对象

public class Main {
    public static void main(String[] args) {
        // 使用构造器创建 Car 类的对象
        Car myCar = new Car("Toyota", "Camry", 2020);

        // 调用对象的方法
        myCar.startEngine();
        myCar.stopEngine();
    }
}

在这个例子中,我们定义了一个带有参数的构造器,并在创建对象时传递了参数。

5. 封装

封装是面向对象编程的一个重要原则,它通过访问修饰符(如 private、public、protected)来控制类的属性和方法的访问权限。

5.1 使用 private 修饰符

public class Car {
    private String brand;
    private String model;
    private int year;

    public Car(String brand, String model, int year) {
        this.brand = brand;
        this.model = model;
        this.year = year;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public void startEngine() {
        System.out.println("Engine started!");
    }

    public void stopEngine() {
        System.out.println("Engine stopped!");
    }
}

在这个例子中,我们将 brand、model 和 year 属性设置为 private,并通过 get 和 set 方法来访问和修改这些属性。

5.2 访问封装后的属性

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Toyota", "Camry", 2020);

        // 访问属性
        System.out.println("Brand: " + myCar.getBrand());
        System.out.println("Model: " + myCar.getModel());
        System.out.println("Year: " + myCar.getYear());

        // 修改属性
        myCar.setBrand("Honda");
        myCar.setModel("Accord");
        myCar.setYear(2021);

        System.out.println("Updated Brand: " + myCar.getBrand());
        System.out.println("Updated Model: " + myCar.getModel());
        System.out.println("Updated Year: " + myCar.getYear());
    }
}

6. 实践练习

6.1 练习1:定义一个 Person 类

定义一个 Person 类,包含以下属性:

  • name(姓名)
  • age(年龄)
  • gender(性别)

并定义一个构造器来初始化这些属性。然后,创建一个 Person 对象并打印其属性。

6.2 练习2:封装 Person 类

将 Person 类的属性设置为 private,并提供 get 和 set 方法来访问和修改这些属性。然后,创建一个 Person 对象并修改其属性。

7. 总结

类和对象是面向对象编程的基础。通过类,我们可以定义对象的属性和行为;通过对象,我们可以实例化类并使用其功能。封装是面向对象编程的一个重要原则,它通过访问修饰符来控制类的属性和方法的访问权限。

通过本教程的学习,你应该能够理解类和对象的基本概念,并能够定义和使用类及其对象。