这里的新手在准备工作面试。
我正在阅读和实践面向对象的编程概念,但是当我们(在Java中)可以创建成员类时,我仍然坚持为什么继承是重要的.
例如,Oracle的官方Java教程给出了自行车的例子,虽然有许多不同类型的自行车(山地自行车、公路自行车或串联自行车)的共同特征,但它们都有自己独特的不同特性。为了实现这一点,我们创建了一个具有所有公共特性的类自行车,然后为山地自行车、公路自行车和串联自行车分离类,所有这些类都继承了自行车类。就像这样..。
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类创建的实例也将具有特性、速度和齿轮,对吗?这就是继承的全部要点,即通过消除创建多个对象所共有的单独数据成员的需要来减少冗余数据。那么我们为什么要继承遗产呢?
谢谢你的耐心..。
发布于 2015-01-15 22:41:04
第一个例子说,每个MountainBike 都是a Bike。应该是这样的。
第二个例子说,每个MountainBike 都属于a Bike。这完全没有意义。例如,使用第二个示例,您可以编写
Bike bike = new Bike();
Bike.MountainBike mountainBike1 = bike.new MountainBike();
Bike.MountainBike mountainBike2 = bike.new MountainBike();这将创建一个名为bike的新MountainBike和两个属于bike的MountainBike。
作为Bike的内部类,有意义的东西是Wheel。然后你就可以写
Bike bike = new Bike();
Bike.Wheel frontWheel = bike.new Wheel();
Bike.Wheel backWheel = bike.new Wheel();然后,您将有一个Bike和两个属于Bike的Wheels。
发布于 2015-01-15 22:30:35
在第二个示例中,MountainBike不是Bike的扩展,而是Bike的内部类(或嵌套类)。内部类有非常特殊的用途,但您没有得到的一个好处是继承。相反,内部类通常用作只有父类才需要的帮助类。就我个人而言,我发现我很少使用它们,因为对于这个问题,我的回答通常是否定的:“父类是唯一需要使用该类的类吗?”所以,我通常会做一个单独的课程。
下面是一个参考页面,来自当前的Java公司:嵌套类
编辑
根据这一引用,使用内部类有3种“令人信服”的理由。就我个人而言,我想不出添加到列表中的任何理由,但我不认为这会使代码更容易阅读--这是非常主观的,并且取决于开发人员习惯于什么:
希望这能有所帮助!
发布于 2015-01-15 22:27:52
这里的问题是,第二个示例中的类MountainBike只能在类Bike中访问。当将Bike作为自己的类创建时,您需要扩展MountainBike,这样MountainBike才能被其他类访问,从而从它的父类Bike继承字段和方法。
https://stackoverflow.com/questions/27974081
复制相似问题