当前位置: 首页 > 知识库问答 >
问题:

从另一个抽象类扩展而来的抽象类的重要性是什么

上官高畅
2023-03-14

大约两个月前,我刚刚开始使用java,我正在尝试更多地理解抽象类。我理解抽象及其实现的基本思想,但我不明白为什么一个抽象类会扩展另一个抽象类,以及它添加了哪些功能。还有,我看到一个抽象类扩展了另一个抽象类,但它只实现了另一个抽象类的一个功能

我确实查了一些示例代码,但它们只显示了实现,没有给出任何解释:

public abstract class Beverage {

   String description = "Beverage";

   public String getDescription(){
      return description;
   }
     public abstract double cost();

 }

// abstract class CondimentDecorator 
   public abstract class CondimentDecorator extends Beverage {

       @Override
       public abstract String getDescription();
 }

如您所见,抽象类conditmentdecorator并没有实现beverate抽象类中的所有功能。它只实现getDescription()函数。但是如果conditmentdecorator是具体的,那么就需要实现beverate抽象类中的所有函数。

共有1个答案

经兴安
2023-03-14

当一个抽象类扩展另一个抽象类时完全没有问题。它只是意味着它在旧类的行为基础上详细说明了新类的行为。但它仍然不是要使用的完整对象,因为它的某些行为仍然是未知的。

类似于现实世界。
假设您有一个类vehicle。它可以是任何交通工具:汽车、飞机、公共汽车、自行车,什么都可以。这是你的抽象类。你现在能用吗?不,因为您不知道是要踩踏板还是要转动车轮。
现在您创建了另一个类,例如,car extends vehicle。你现在能用吗?可能吧,但你还是不知道它是卡车还是客车。但是您知道它有一个方向盘。
最后,当您再创建一个类时,例如MySuperPassenerCar extends Car您就知道这是什么对象、如何使用它以及它有什么方法。

 类似资料:
  • 我有一个抽象类B,它扩展了另一个抽象类A。在抽象类A中,我有一个受保护的方法转换。我想测试方法foo,它从没有实现的基类调用方法convert。如果无法更改转换方法签名,如何模拟方法转换。 我使用Mockito.spy()调用真正的方法,但转换方法是不可用的嘲弄(通过Mockito.when(...)。 告诉我如何测试方法foo。

  • 本文向大家介绍C#扩展抽象基类,包括了C#扩展抽象基类的使用技巧和注意事项,需要的朋友参考一下 示例 与接口(可以描述为实现合同)不同,抽象类充当扩展的合同。 抽象类无法实例化,必须对其进行扩展,然后可以实例化生成的类(或派生类)。 抽象类用于提供通用实现 上面的示例显示了实现Car的任何扩展类如何自动接收HonkHorn方法。这意味着任何开发新汽车的开发人员都无需担心它将如何鸣笛。

  • 问题内容: 有这样的事情: 抽象类: 和扩展器: 我想要的是扩展,因为如果不处理它,然后尝试在中处理它。例如add- 但同时让类处理默认值,例如。 这是完全错误的方法吗? 到目前为止,我所做的就是添加一个接口。通常: 在课堂上: 在课堂上: 这看起来像是可用的设计吗? 并且,主要问题: 有没有什么好办法扩展该类,以便可以使用与in 中相同的切换方法?我想知道的是,有没有一个更好的设计,第二个是是否

  • 问题内容: 我之前了解到抽象类可以扩展具体类。尽管我没从JAVA设计师那里看到原因,但是没关系。我还了解到,扩展具体类的抽象类可以使重写的方法抽象。为什么?您可以提供有用的用例吗?我正在尝试学习设计模式,我不想错过任何东西。 这是示例: 问题答案: 如果我有一组想要默认实现的类(以便它们可以从扩展),并且想要强制提供自己的实现(在这种情况下使其抽象为子类会强制执行此操作。) 当然,此示例中的另一种

  • 问题内容: 我得到了几种解释,但是到目前为止,我还无法理解Java中的抽象类和方法是什么。 有人说它必须与程序的安全性做些关系,另一些人说不是那样。 即使从Dietel&Dietel的书中,我也不明白它的目的。我们何时,何地,为什么使用它? 请像您正在教初学者一样进行解释,非常感谢您的帮助。 问题答案: 抽象类是无法实例化的类。唯一的目的是扩展其他类。 抽象方法是抽象类中的方法(必须声明为抽象),

  • 我想构建一个抽象类,并指定扩展类监听/处理的某些JavaFX属性。例如,我有: