java:关于多态,继承,接口的好处。

目录

比喻

1. 交通工具(Driver)

2. 汽车(Car)和自行车(Bicycle)

代码示例:

思考:为什么不直接 Car V=new Car( );?

1. 多态性

2. 代码的灵活性

3. 易于扩展

4. 减少耦合

总结


比喻

想象一下,你有一个 “交通工具” 的抽象概念(可以是一个接口或类),然后你有不同的具体交通工具,比如 “汽车” 和 “自行车”

1. 交通工具(Driver)
  • 这是一个接口,定义了所有交通工具应该具备的功能,比如 “行驶”
2. 汽车(Car)和自行车(Bicycle)
  • 这两个类实现了 “交通工具” 的功能。

代码示例:

interface Vehicle {
    void drive(); // 行驶的方法
}

class Car implements Vehicle {
    @Override
    public void drive() {
        System.out.println("Car is driving.");
    }
}

class Bicycle implements Vehicle {
    @Override
    public void drive() {
        System.out.println("Bicycle is pedaling.");
    }
}

public class Main {
    public static void main(String[] args) {
        Vehicle v = new Car(); // 创建一个汽车对象
        v.drive(); // 输出: Car is driving.

        v = new Bicycle(); // 现在把 v 变成一个自行车对象
        v.drive(); // 输出: Bicycle is pedaling.
    }
}
  • Vehicle v = new Car();:你创建了一个 “汽车” 对象,并把它赋值给一个 “交通工具” 类型的变量 v。你可以通过 v 来调用 “汽车” 的功能。

  • v.drive();:调用 drive 方法,输出 “Car is driving.”

  • 然后你可以把 v 重新赋值为一个 “自行车” 对象,依然使用同一个变量 v,但现在它代表的是 “自行车”

思考:为什么不直接 Car V=new Car( );?

使用 Vehicle v = new Car(); 而不是 Car v = new Car(); 的主要原因是 多态性 和 灵活性。下面是一些具体的原因和好处:

1. 多态性

  • 多态性允许你使用父类(或接口)类型的引用来指向子类(或实现类)的对象。这意味着你可以在运行时决定使用哪个具体的实现。
  • 例如,如果你有多个实现(如 Car 和 Bicycle),你可以将它们都赋值给同一个 Vehicle 类型的变量,这样你就可以通过同一个接口来处理不同的对象。

2. 代码的灵活性

  • 使用接口或父类类型的引用可以让你的代码更灵活。例如,你可以在运行时根据条件选择不同的实现,而不需要修改代码的其他部分。
    Vehicle v;
    if (condition) {
        v = new Car();
    } else {
        v = new Bicycle();
    }
    v.drive(); // 根据条件调用不同的实现

    3. 易于扩展

  • 如果将来你想添加新的交通工具(例如 Truck),只需实现 Vehicle 接口,而不需要修改使用 Vehicle 类型的现有代码。
    class Truck implements Vehicle {
        @Override
        public void drive() {
            System.out.println("Truck is driving.");
        }
    }
    
    // 使用时
    Vehicle v = new Truck();
    v.drive(); // 输出: Truck is driving.

    4. 减少耦合

  • 使用接口可以减少代码之间的耦合,使得代码更易于维护和测试。你可以轻松替换实现而不影响使用它的代码。
  • 总结

  • 使用 Vehicle v = new Car(); 提供了更大的灵活性和可扩展性,使得代码更具可维护性和可读性。而直接使用 Car v = new Car(); 则限制了你只能使用 Car 类型,失去了多态性带来的优势。
  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值