跳至主要內容

Java面向对象(基础)- 三大特性

bsfc.tech大约 2 分钟JavaJavaSE

Java面向对象基础

一、面向对象概述

面向对象编程(Object-Oriented Programming,OOP)是一种流行的编程范式,它提倡将程序设计组织为相互作用的对象集合,每个对象都包含了数据(属性或状态)以及处理数据的方法(行为)。在Java中,面向对象的主要特点包括:

1. 封装 (Encapsulation)

封装是将数据和操作数据的方法捆绑在一起,并对外隐藏内部细节,仅通过公开接口访问数据或执行操作。例如:

public class Car {
    // 封装数据字段(私有)
    private String brand;
    private int year;

    // 提供公共方法来设置和获取数据
    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getBrand() {
        return brand;
}

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

public int getYear() {
    return year;
}

2. 继承 (Inheritance)

继承允许一个类(子类)从另一个类(父类)继承特性并扩展它们。子类自动拥有父类的所有非私有属性和方法,还可以定义自己的特性和方法。

public class SportsCar extends Car {
    private boolean convertible;

    public SportsCar(String brand, int year, boolean isConvertible) {
        super(brand, year); // 调用父类构造器
        this.convertible = isConvertible;
    }

    public boolean isConvertible() {
        return convertible;
    }
}

3. 多态 (Polymorphism)

多态意味着一个接口可以有多种形态,即同一消息可以根据发送给的不同对象产生不同的行为。Java中主要是通过接口实现和方法重写来体现多态性。

public interface Driveable {
    void drive();
}

public class Car implements Driveable {
    // 实现Driveable接口
    @Override
    public void drive() {
        System.out.println("Driving the car...");
    }
}

public class Bicycle implements Driveable {
    // 实现Driveable接口
    @Override
    public void drive() {
        System.out.println("Riding the bicycle...");
    }
}

public static void main(String[] args) {
    List<Driveable> vehicles = new ArrayList<>();
    vehicles.add(new Car());
    vehicles.add(new Bicycle());

    for (Driveable vehicle : vehicles) {
        vehicle.drive(); // 显示多态行为
    }
}

二、类与对象

  • 类 (Class) 是Java中定义对象蓝图的模板。它描述了一组相关属性和方法。

  • 对象 (Object) 是类的一个实例,具有类中定义的状态和行为。

  • 实例化 (Instantiation) 创建对象的过程,如 Car myCar = new Car();

  • 构造方法 (Constructor) 用于初始化对象,具有与类同名且无返回类型的特殊方法。

public class Car {
    // 构造方法
    public Car(String brand, int year) {
        this.brand = brand;
        this.year = year;
    }
}

三、静态成员

  • 静态域 (Static Fields) 在类级别上定义,所有类实例共享同一个静态变量。

    public class Car {
        public static int totalCars = 0;
        // ...
    }
    
    // 使用
    Car.totalCars++;
    
  • 静态方法 (Static Methods) 可以直接通过类调用,无需实例化对象,不能访问非静态成员。

    public class Car {
        public static void increaseTotalCars() {
            Car.totalCars++;
        }
    }
    
    // 使用
    Car.increaseTotalCars();
    

以上是Java面向对象编程的一些核心概念和示例代码,更多面向对象编程实践还会涉及到接口、抽象类、包、访问修饰符等其他重要概念。