Java面向对象编程:封装、继承与多态案例

原创 偏执的太偏执、 2024-10-15 20:12 199阅读 0赞

Java是一种广泛使用的面向对象编程语言,它提供了封装、继承和多态等特性。下面我们将通过几个实际案例来理解这些概念。

  1. 封装

    1. // 假设有一个Car类
    2. class Car {
    3. private String brand; // 属性
    4. private int yearOfManufacture; // 属性
    5. // 构造函数
    6. public Car(String brand, int year) {
    7. this.brand = brand;
    8. this.yearOfManufacture = year;
    9. }
    10. // 获取品牌的方法,内部操作
    11. public String getBrand() {
    12. return brand;
    13. }
    14. }

    在这个例子中,Car 类的属性(如品牌和年份)被封装在类内部。外界只能通过类提供的方法来访问这些属性。

  2. 继承
    ```java
    // 假设有一个Vehicle类作为父类
    class Vehicle {
    // 父类共有的方法
    public void startEngine() {

    1. System.out.println("Vehicle engine started.");

    }
    }

// 子类Car继承自父类Vehicle
class Car extends Vehicle {
private String color;

  1. // 子类独有的属性和方法
  2. public Car(String brand, int year, String color) {
  3. super(brand, year); // 调用父类构造函数
  4. this.color = color;
  5. }
  6. // 重写父类方法,子类操作
  7. @Override
  8. public void startEngine() {
  9. System.out.println("Car engine started (" + color + ")."));
  10. }

}

  1. 在这个例子中,`Car` 类继承自`Vehicle` 类。`Car` 类不仅保留了父类的属性和方法,还添加了自己的独有的属性(如颜色)和方法。
  2. 3. **多态**:
  3. ```java
  4. // 创建对象并调用方法,体现不同形态
  5. class Test {
  6. static void main(String[] args) {
  7. Vehicle vehicle1 = new Car("Toyota", 2021, "Blue"));
  8. Vehicle vehicle2 = new Car("Ford", 2022, "Red"));
  9. // 调用startEngine方法,根据对象类型动态调用
  10. if (vehicle1 instanceof Car)) {
  11. ((Car) vehicle1).startEngine(); // 调用Car类的方法
  12. } else if (vehicle2 instanceof Car)) {
  13. ((Car) vehicle2).startEngine(); // 调用Car类的方法
  14. }
  15. }
  16. }

在这个例子中,我们通过创建Car 类的实例并将它们赋值给Vehicle 类的对象来展示了多态。调用方法时会根据对象的实际类型动态地选择相应的方法,这就是多态现象。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,199人围观)

还没有评论,来说两句吧...

相关阅读