抽象方法与接口

use*_*092 1 c# java oop abstract-class interface

我正在重构我的代码,所以我需要做出关于接口或抽象类的决定.我有基类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.
    }
}
Run Code Online (Sandbox Code Playgroud)

The*_*uin 8

如果您没有要继承的任何基本功能,请使用接口.当您想要继承部分实现时,将使用抽象类.


pm1*_*100 6

一个常见的事情是两者都做

a)提供接口.使用对象时使用界面(即调用play方法).

b)提供一个基类,为具有普通管道的情况实现接口; 常用方法等.这是实施者可选择使用的帮手

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