【发布时间】:2015-03-14 11:23:41
【问题描述】:
这里是新手,准备面试。
我正在阅读和练习面向对象的编程概念,但是我一直不明白为什么在(在 Java 中)我们可以创建成员类时继承很重要...
例如,Oracle's official Java tutorial 给出了自行车的示例,尽管不同类型的自行车(山地、公路或双人自行车)有许多共同的特征,但它们也都有自己独特的不同特征。因此,为了实现这一点,我们创建了一个 Bikes 类,它具有所有的共同特征,然后将山地、公路和双人自行车的类分开,所有这些都继承了自行车类。像这样的......
class Bike {
int speed;
int gear;
}
class MountainBike extends Bike {
int chain rings;
}
//classes for road bike and tandem bike etc...
跟下面不一样吗?
class Bike {
int speed;
int gear;
class MountainBike {
int chain rings;
}
//classes for Road bike or tandem bike etc...
}
我的意思是创建的 MountainBike 类的实例也将具有速度和齿轮特征,对吗?这就是继承的全部意义,即通过消除创建许多对象共有的单独数据成员的需要来减少冗余数据。那么为什么我们需要继承呢?
感谢您的耐心等待...
【问题讨论】:
-
在您的示例中,
MountainBike是Bike的内部类,而不是static,因此只有当您有Bike的封闭实例时才能拥有它的实例。不管怎样,如果你想让Bike和MountainBike都有一个ride方法,你会怎么做?如果您还想拥有RoadBike、DirtBike或Tricycle,您将如何更改您的设计? -
@MikeKobit 小术语问题 - inner 类不能是静态的。根据定义,静态嵌套类不是内部类,因为它没有包含实例。
标签: java class oop inheritance nested-class