实现接口的类只是没有其他方法吗?

时间:2016-11-25 03:37:13

标签: c# class inheritance interface uml

这种情况可以,还是我误解了一路?

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

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

很抱歉,如果这是一个愚蠢的问题,我对C#很新,并且仍然需要学习很多东西,需要在我继续学习之前确认我的理解。我不确定这是否是最好的方法,因为除了访问器和接口的方法之外,这里的所有类都没有其他方法。有没有更好的方法我应该这样做,因为没有方法的类(除了接口和访问器)似乎有点错误?

1 个答案:

答案 0 :(得分:0)

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

abstract class Item : GameObject, ISellable
{ 
}

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

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

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

答案很长:通过在问题的上下文中对对象进行深思熟虑的抽象来组织您的课程。可以定义一个只有一个具体子类的抽象类,或者一个没有body的子类。只要你忠实于所涉及的物体的本质。

abstract class Person {}

abstract class PlayerCharacter : Person {}

class Batman : PlayerCharacter {}