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

抽象方法vs接口

朱保赫
2023-03-14

我正在重构我的代码,所以我需要做出关于接口或抽象类的决定。我有基类Player和继承基类的类,称为VideoPlayer、MusicPlayer等。基类有抽象方法,没有实现(Play)。那么,最好的方法是什么?将Play放在接口中或将其留在抽象类中。在MusicPlayer中播放与在VideoPlayer中的播放器不同。我是用C#实现的。

class Player
{
    abstract void Play();
} 

class VideoPlayer : Player
{
    void Play()
    {
      //Some code.
    }
}

class MusicPlayer : Player
{
    void Play()
    {
      //Some code.
    }
}

共有3个答案

伍成仁
2023-03-14

一般来说,如果只是为了表示一个方法可以被调用,你应该使用接口。该接口部分是为解决单一继承问题而设计的。如果您没有在父类中实现公共方法,请使用接口。

晏卓君
2023-03-14

一个共同点是两者都要做

a) 提供接口。并在使用对象时使用接口(即调用 play 方法)。

b) 提供一个基类,在存在公共管道的情况下实现接口;这是实现者可以选择使用的助手

通过这种方式,IAmAPlayer的实现者可以简单地实现该接口,或者如果他们的用例与您的基类匹配,他们可以使用该接口。

严宇
2023-03-14

如果您没有任何想要继承的基本功能,请使用接口。当您有一个想要被继承的部分实现时,可以使用抽象类。

 类似资料:
  • Q.如果您在未链接到接口的抽象类中创建抽象方法,您是否仍然遵循编程到接口的原则? 我已经为我创建的所有UI类使用了接口;但是,考虑到接口的原因,我看不到与我想要创建的抽象方法和已经存在的接口的直接关联。 通常,我只会创建抽象方法并完成;但是,我想知道我是否违反了程序到接口的设计原则。 问:我应该为此创建另一个接口,还是继续使用抽象方法? 注意:这不是一个接口与抽象类的问题。 注意:我的基类更多的是

  • 我已经研究了接口、抽象类和继承的用法。我知道每一种都有其用途,但我还是有点困惑。 我知道一般一个类只能扩展另一个类,虽然有些可能支持多个继承,但它可以实现多个接口(这可能是使用接口的主要原因)。然而,如果我是正确的,这个类也可以被另一个类扩展。我还看到抽象类可能比接口更快,并且可以有非静态的最终变量。 所以,我仍然不确定什么时候使用哪个更好。也许通过举例可以更好地理解这一点。我不反对使用任何东西,

  • 当我宣布“抽象公共无效显示();”在抽象类测试中,这是创建一个全新的show()方法,还是只引用Inter接口中声明的show()方法?请澄清。

  • 这似乎是一个基本问题。但在采访前需要澄清。 我在抽象类中有一个非抽象方法。它的具体类重写了该方法。但我想调用父类的原始方法来调用,而不是重写方法。有什么办法吗? 据我所知,没有办法调用原始方法?

  • 本文向大家介绍详解PHP的抽象类和抽象方法以及接口总结,包括了详解PHP的抽象类和抽象方法以及接口总结的使用技巧和注意事项,需要的朋友参考一下 PHP中的抽象类和抽象方法自己用的不多,但是经常会在项目中看到别人使用,同样,今天在看别人的代码的时候,发现使用了抽象类,就总结下: 抽象类: 1、如果一个类中有一个方法是抽象方法,则这个类就是抽象类; 2、抽象类必须加上abstract关键字修饰; 抽象

  • 我想读关于抽象的文章,但读到不同的文章,我感到很困惑。 下面是我无法理解的问题: 1)“抽象是通过使用抽象类和接口实现的吗?”我对此进行了搜索,得到了三种类型的答案: 与此处解释的不同。 它们是相同的,只是不同的观点,就像这里解释的。 最后一个是抽象类用来实现抽象。 哪一个是真的?请举一个简单的例子。 2)“抽象意味着隐藏不必要的细节。比如专注于一个对象做什么而不是它是如何完成的。” 这是正确的吗