Skip to content

面向对象编程

Java 是一种面向对象的编程语言,支持以下特性:

1. 封装

封装是将数据(属性)和操作数据的方法(行为)组合在一起,形成一个类。通过封装,可以隐藏对象的内部状态,只暴露必要的接口给外部使用。这有助于提高代码的安全性和可维护性。

示例代码

java
public class BankAccount {
    private double balance; // 私有字段,外部无法直接访问

    public BankAccount(double initialBalance) {
        this.balance = initialBalance;
    }

    // 公共方法,用于存款
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        }
    }

    // 公共方法,用于取款
    public void withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
        }
    }

    // 公共方法,用于查询余额
    public double getBalance() {
        return balance;
    }
}

2. 继承

继承是指一个类可以继承另一个类的属性和方法,从而实现代码重用。子类可以扩展或修改父类的行为。Java 使用 extends 关键字来实现继承。

示例代码

java
// 父类
public class Animal {
    public void eat() {
        System.out.println("This animal eats food.");
    }
}

// 子类
public class Dog extends Animal {
    public void bark() {
        System.out.println("Woof!");
    }
}

public class InheritanceExample {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat(); // 继承自 Animal 类的方法
        dog.bark(); // Dog 类的方法
    }
}

3. 多态

多态是指同一操作可以作用于不同的对象,表现出不同的行为。多态可以通过方法重载和方法重写来实现。方法重载是指同一方法名可以有不同的参数列表,而方法重写是指子类可以重写父类的方法。

示例代码

java
// 父类
public class Shape {
    public void draw() {
        System.out.println("Drawing a shape.");
    }
}

// 子类
public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle.");
    }
}

public class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle.");
    }
}

public class PolymorphismExample {
    public static void main(String[] args) {
        Shape shape1 = new Circle(); // 向上转型
        Shape shape2 = new Rectangle(); // 向上转型

        shape1.draw(); // 输出: Drawing a circle.
        shape2.draw(); // 输出: Drawing a rectangle.
    }
}

总结

面向对象编程是 Java 的核心特性之一,通过封装、继承和多态,Java 提供了一种灵活且强大的方式来组织和管理代码。这些特性使得 Java 程序更易于理解、维护和扩展。