Files
home/docs/java/oop.md
2026-05-13 16:24:00 +08:00

2.8 KiB

面向对象编程

类与对象

类的定义

public class Person {
    // 属性(字段)
    private String name;
    private int age;
    
    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 方法
    public void sayHello() {
        System.out.println("你好,我是" + name);
    }
    
    // Getter和Setter
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
}

创建对象

Person person = new Person("张三", 25);
person.sayHello();  // 你好,我是张三
person.setName("李四");
System.out.println(person.getName());  // 李四

封装

封装是面向对象的三大特性之一,通过访问修饰符控制类的成员访问权限。

修饰符 同一类 同一包 子类 其他
public
protected
default
private

继承

// 父类
public class Animal {
    protected String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public void eat() {
        System.out.println(name + "正在吃东西");
    }
}

// 子类
public class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }
    
    public void bark() {
        System.out.println(name + "正在汪汪叫");
    }
}

// 使用
Dog dog = new Dog("旺财");
dog.eat();   // 旺财正在吃东西
dog.bark();  // 旺财正在汪汪叫

多态

public class Shape {
    public void draw() {
        System.out.println("绘制图形");
    }
}

public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

public class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制矩形");
    }
}

// 多态使用
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();
shape1.draw();  // 绘制圆形
shape2.draw();  // 绘制矩形

抽象类与接口

抽象类

public abstract class Vehicle {
    protected String brand;
    
    public Vehicle(String brand) {
        this.brand = brand;
    }
    
    // 抽象方法
    public abstract void start();
    
    // 具体方法
    public void showBrand() {
        System.out.println("品牌:" + brand);
    }
}

接口

public interface Flyable {
    void fly();
    
    default void show() {
        System.out.println("可以飞行");
    }
}

public class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("鸟在飞翔");
    }
}