3. 在Java中,什么是继承?

106 阅读3分钟

3. 什么是继承?

在面向对象编程中,继承是一个非常重要的概念,它允许我们通过扩展现有的类(即超类或父类),来创建新的类(即子类)。子类会继承超类的状态(字段)和行为(方法),并可以在此基础上添加或修改特性。这使得我们能够重用已有代码并避免重复。

举个例子,假设我们有一个 Bicycle 类,表示所有自行车的共有特性,例如速度、踏频和档位。不同类型的自行车(如山地自行车、公路自行车和双人自行车)可能在这些共有特性上有所不同,但它们也有一些独特的功能。例如,山地自行车有额外的链环,公路自行车有下拉式车把,双人自行车有两个座位和两组车把。通过继承,我们可以让这些不同类型的自行车类共享 Bicycle 类的通用代码,同时添加它们各自独特的功能。

继承的工作原理

在这个例子中,我们可以通过让 MountainBikeRoadBikeTandemBike 继承 Bicycle 类,来实现这一点。所有这三种自行车类型都会拥有 Bicycle 类中的字段和方法,而不需要在每个类中重复这些代码。

在 Java 中,创建一个继承类的语法如下:

class MountainBike extends Bicycle {

    // 新的字段和方法,定义山地自行车的独特功能

}

这段代码的含义是,MountainBike 类将继承 Bicycle 类的所有字段和方法。这样,MountainBike 类就具有了与 Bicycle 类相同的速度、踏频和档位等特性,同时它还可以添加或修改属于山地自行车特有的功能。

继承的好处

  1. 代码重用:通过继承,子类可以重用父类的代码,这样就避免了代码的重复。比如,所有自行车共享的功能只需要在 Bicycle 类中编写一次,子类可以直接继承使用。
  2. 提高可维护性:如果需要修改共享的功能,只需修改父类的代码,所有子类都会自动继承到这些变化,减少了重复修改的工作量。
  3. 增强可读性:子类的代码可以专注于独特功能,而不需要再编写共有功能,从而使得代码更加简洁明了。

继承的例子

假设我们现在有一个 Bicycle 类,它包含了通用的自行车特性。我们可以通过继承来创建不同类型的自行车:

class Bicycle {

    int cadence = 0; // 踏频
    int speed = 0;   // 速度
    int gear = 1;    // 档位

    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear);
    }
}

class MountainBike extends Bicycle {
    int seatHeight; // 新增的字段,定义山地自行车的特性

    // 新方法,定义山地自行车的独特功能
    void setSeatHeight(int newValue) {
        seatHeight = newValue;
    }
}

class RoadBike extends Bicycle {
    boolean dropHandlebars; // 新增的字段,定义公路自行车的特性

    void setDropHandlebars(boolean newValue) {
        dropHandlebars = newValue;
    }
}

class TandemBike extends Bicycle {
    int numSeats; // 新增的字段,定义双人自行车的特性

    void setNumSeats(int newValue) {
        numSeats = newValue;
    }
}

在这个例子中,MountainBikeRoadBikeTandemBike 都继承了 Bicycle 类的状态(如速度、踏频、档位等)和行为(如加速、刹车、换档等)。同时,它们分别定义了各自特有的功能,如山地自行车的座椅高度、公路自行车的下拉把手、双人自行车的座位数量。

总结

继承是一种强大的面向对象编程机制,它允许你通过创建子类来继承父类的属性和行为,并为子类添加特有的功能。这样,你可以在代码中重用已定义的功能,减少重复代码,提高可维护性和可扩展性。