【问题标题】:abstract classes ,constructor and interface抽象类、构造函数和接口
【发布时间】:2011-10-31 11:32:22
【问题描述】:

我真的很困惑,我已经阅读了大量关于这个主题的问题,但我无法明确指出接口可以做什么而抽象类不能做的任何事情。

【问题讨论】:

  • 这样的问题有很多答案。你最好在已经回答的问题中提问。不过,简短的回答是:接口是实现的,而不是继承的。 Java没有多重继承,但可以实现多个接口。
  • @merryprankster - 你不能就一个问题提出问题,只能回答它。低代表用户也无法评论现有问题/答案。

标签: java interface abstract-class


【解决方案1】:

一个类可以实现多个接口,但不能实现多个抽象类。

【讨论】:

  • 实现抽象类?是否应该延长..?
【解决方案2】:

接口本身不能做任何事情。它只是定义了提供某些功能的类和调用者之间的契约类型。

抽象类是定义为abstract 的类。如果类至少有一个抽象方法(即没有实现的方法),则必须将其定义为抽象。但是抽象类也可以包含实现。

接口不能包含实现。只有抽象方法和常量(静态最终字段)。

类可以实现多个接口,只扩展一个类(包括抽象类)。

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

    抽象类也可以包含函数实现,而不仅仅是定义必须通过继承类来实现的函数

    【讨论】:

      【解决方案4】:

      抽象类是部分实现的类,将由具体类(非抽象)扩展,以实现。

      示例:

      这个例子并不意味着子类必须实现这些方法(就像实现接口时发生的那样)。您可以声明一个子类抽象,稍后将由另一个子子类完成实现。 (例如:Boat可以有子类“SpeedBoat”和FisshingBoat,并且可以以不同的方式实现honk())

      界面是班级对外的眼睛。类能做什么是在接口中声明,但在类中实现。

      一个类可以实现多个接口,但只能扩展一个类。 请看这个接口的小例子:

      正如您所见,当我们使用接口时,我们可以拥有很大的灵活性。一些敌人可以做一些英雄也可以做的事情(黑暗骑士可以投掷箭)。 我希望你现在能感受到抽象类和接口之间的区别。

      记住接口和抽象类:

      • 接口没有变量,只有未实现的方法(隐式抽象方法)

      • 实现接口的类必须在其主体中包含接口的所有方法

      • 一个类只能扩展一个类,但实现多个接口

      • 如果一个类有一个抽象方法,它必须被声明为抽象。

      • 抽象类可以实现接口

      • 接口可以扩展其他接口(多个)

      我不知道我是否忘记了什么,希望这些信息对您有所帮助。

      【讨论】:

        【解决方案5】:

        抽象类可以做接口可以做的所有事情。然而,这反过来是不正确的。

        【讨论】:

        • 不是真的,你没有抓住重点。接口就像一个合同。抽象类是更具体的东西。
        【解决方案6】:

        抽象类可以包含抽象方法、抽象属性以及其他成员(就像普通类一样)。 接口只能包含抽象方法、属性,但我们不需要放入abstract和public关键字。默认情况下,接口中定义的所有方法和属性都是公共的和抽象的。 我们可以看到抽象类包含私有成员,我们也可以放置一些带有实现的方法。但在接口的情况下,只允许方法和属性

        【讨论】:

          【解决方案7】:

          接口和抽象类几乎都是相同的,主要区别在于使用接口我们不能定义方法的主体,但是使用抽象类我们可以在抽象类中或在实现时定义方法的主体。 例如

          Interface abc()
          {
           string xyz();
          }
          
          abstract abc()
          {
           string xyz()
          {
          // define body
          }
          }
          or 
          abstract abc()
          {
           string xyz();
          }
          

          【讨论】:

            【解决方案8】:

            抽象类是一个类 - 它为一类对象定义了某些行为的全部或部分实现,但为具体的子类提供了一些扩展点。

            接口是一种类型 - 它定义了由任何实现该接口的类提供的操作集。

            您几乎是在问候选人是否可以做到职位描述无法做到的事情。创建一个抽象类说“这是一些实现的模板”。创建一个接口表示“我希望一个对象能够提供这些功能”。您可以在抽象类中使用虚方法来实现类型的某些方面,但目的不同。

            【讨论】:

              猜你喜欢
              • 2017-04-07
              • 1970-01-01
              • 1970-01-01
              • 2017-06-04
              • 1970-01-01
              • 1970-01-01
              • 2015-10-25
              • 2023-03-04
              • 1970-01-01
              相关资源
              最近更新 更多