2016-11-25 46 views
3

这种情况是否正确,或者我误解了一些事情?只有没有其他方法实现接口的类可以吗?

我有一个超类有一些受保护的变量和一些存取方法。然后我有3个从超类继承的子类,每个子类都有新的和不同的变量以及相关的访问器(显然这到目前为止确定)。然后我有一个接口只包含一个方法,没有变量,所有类都通过不同的方式处理变量并返回一个答案。

我在超类中使用的是一个接口而不仅仅是一个虚拟方法,因为我需要从程序中的其他无关类调用此方法来返回不同的处理数据。

对不起,如果这是一个愚蠢的问题,我对C#很陌生,仍然学习很多,需要确认我的理解,然后才能继续。我不确定这是否是最好的方法,因为除了访问器和接口的方法之外,这里的所有类都没有其他方法。有没有更好的方法,我应该这样做,因为没有方法的类(除了接口和访问器)看起来有点不对?

+2

FWIW,这远非一个愚蠢的问题。一种方法的接口很好。这个问题(和一个很好的答案)很容易成为一本书。 – jdphenix

+0

我认为这是一个完全合理的问题。拥有这样的接口是可以接受的(实际上,Microsoft自己提供了几个这样的接口,例如IDisposable)。 – EJoshuaS

+0

谢谢你们,我有点担心,我正在解决这个问题。 – Dan

回答

0

简短回答:你在正确的轨道上。让超类继承接口,然后在子类中为它提供实现。

abstract class Item : GameObject, ISellable 
{ 
} 

class GenericLoot : Item { 
    public int BasePrice { get; } 
} 

class Slave : Person, ISellable { 
    public int BasePrice { get; } 
} 

...有点黑暗,但你明白了。

长答案:通过在问题的上下文中深思熟虑的抽象来组织你的类。用一个具体的子类或者一个具有NO主体的子类来定义一个抽象类是可以的。只要你坚持涉及的对象的性质。

abstract class Person {} 

abstract class PlayerCharacter : Person {} 

class Batman : PlayerCharacter {} 
相关问题