Java-超类(继承)与父类(无继承)
新手在这里,准备工作面试 我正在阅读和实践面向对象编程的概念,但我一直坚持(在Java中)当我们可以创建成员类时,为什么继承很重要 例如,给出了自行车的示例,虽然不同类型的自行车(山地车、公路车或串联式自行车)有许多共同的特征,但它们也都有自己独特的不同特征。为了实现这一点,我们创建了一个类Bikes,它具有所有的共同特征,然后为山地自行车、公路自行车和串联自行车创建单独的类,所有这些都继承了bike类。像这样的Java-超类(继承)与父类(无继承),java,class,oop,inheritance,nested-class,Java,Class,Oop,Inheritance,Nested Class,新手在这里,准备工作面试 我正在阅读和实践面向对象编程的概念,但我一直坚持(在Java中)当我们可以创建成员类时,为什么继承很重要 例如,给出了自行车的示例,虽然不同类型的自行车(山地车、公路车或串联式自行车)有许多共同的特征,但它们也都有自己独特的不同特征。为了实现这一点,我们创建了一个类Bikes,它具有所有的共同特征,然后为山地自行车、公路自行车和串联自行车创建单独的类,所有这些都继承了bike类。像这样的 class Bike { int speed; int gea
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
,以便其他类可以访问MountainBike
,因此,它从其父类Bike继承字段和方法,在第二个示例中,类MountainBike只能在类Bike内访问。在创建MountainBike
作为自己的类时,您需要扩展Bike
,以便其他类可以访问MountainBike
,这样它就从其父类Bike
继承字段和方法。在第二个示例中,MountainBike不是Bike的扩展,而是自行车的内部类(或嵌套类)。内部类有非常特殊的用途,但您没有得到的一个好处是继承。相反,内部类通常用作仅父类需要的帮助器类。就个人而言,我发现我很少使用它们,因为我的答案通常是否定的:“父类是唯一需要使用这个类的类吗?”因此,我通常会创建一个单独的类来代替
以下是当前Java公司的参考页:
编辑
根据该引用,使用内部类有3个“令人信服”的理由。就个人而言,我想不出任何理由添加到列表中,但我不同意这样做会使代码更易于阅读——这是非常主观的,取决于开发人员习惯于:
这是一种逻辑上对只在一个地方使用的类进行分组的方法
它增加了封装
它可以产生更可读和可维护的代码
希望这有帮助 在第二个示例中,MountainBike不是Bike的扩展,而是Bike的内部类(或嵌套类)。内部类有非常特殊的用途,但您没有得到的一个好处是继承。相反,内部类通常用作仅父类需要的帮助器类。就个人而言,我发现我很少使用它们,因为我的答案通常是否定的:“父类是唯一需要使用这个类的类吗?”因此,我通常会创建一个单独的类来代替
以下是当前Java公司的参考页:
编辑
根据该引用,使用内部类有3个“令人信服”的理由。就个人而言,我想不出任何理由添加到列表中,但我不同意这样做会使代码更易于阅读——这是非常主观的,取决于开发人员习惯于:
这是一种逻辑上对只在一个地方使用的类进行分组的方法
它增加了封装
它可以产生更可读和可维护的代码
希望这有帮助 为什么我们需要继承?管理全局性的东西,如目录。
也许我是一家自行车店的经理,我只想知道我有多少辆自行车,以及它们的价格。但是作为一个卖家,我需要知道,如果是山地自行车,城市自行车,它们之间有什么区别为什么我们需要继承?管理全局性的东西,如目录。
也许我是一家自行车店的经理,我只想知道我有多少辆自行车,以及它们的价格。但是作为一个卖家,我需要知道如果是山地自行车,城市自行车,它们之间有什么区别呢第一个例子说每辆山地自行车都是一辆自行车。应该是这样的
第二个例子说,每辆山地车都属于自行车。这毫无意义。例如,对于第二个示例,您可以编写
Bike bike = new Bike();
Bike.MountainBike mountainBike1 = bike.new MountainBike();
Bike.MountainBike mountainBike2 = bike.new MountainBike();
Bike bike = new Bike();
Bike.Wheel frontWheel = bike.new Wheel();
Bike.Wheel backWheel = bike.new Wheel();
这将创建一个名为Bike
的新Bike
和两个属于Bike
的山地自行车
作为自行车
的内部类别,有意义的东西应该是车轮
。然后你就可以写了
Bike bike = new Bike();
Bike.MountainBike mountainBike1 = bike.new MountainBike();
Bike.MountainBike mountainBike2 = bike.new MountainBike();
Bike bike = new Bike();
Bike.Wheel frontWheel = bike.new Wheel();
Bike.Wheel backWheel = bike.new Wheel();
然后你会有一辆自行车
,它有两个轮子
,属于自行车
第一个例子说每辆山地自行车
都是自行车
。应该是这样的
第二个例子说,每辆山地车都属于自行车。这毫无意义。例如,对于第二个示例,您可以编写
Bike bike = new Bike();
Bike.MountainBike mountainBike1 = bike.new MountainBike();
Bike.MountainBike mountainBike2 = bike.new MountainBike();
Bike bike = new Bike();
Bike.Wheel frontWheel = bike.new Wheel();
Bike.Wheel backWheel = bike.new Wheel();
这将创建一个名为Bike
的新Bike
和两个属于Bike
的山地自行车
作为自行车
的内部类别,有意义的东西应该是车轮
。那你就可以