一个类可以同时实现两个接口吗?

5

我尝试做了这样的事情:

class Student: IPersonalDetails: IOtherDetails
{
      //Code
}

它报错了。为什么我不能实现两个接口?


2
使用逗号(,)分隔接口名称。 - Ozan
9
我总觉得这种琐碎的问题获得了赞,而真正的计算机科学问题却没有得到应有的认可,这让我感到不爽... :( - Srinivas Reddy Thatiparthy
1
@Srinivas:请将其降级。 - RKh
1
@RPK 今天我的投票次数已经用完了 :) - Srinivas Reddy Thatiparthy
3
只有在你已经知道答案的情况下,一个问题才是“平凡的”;对于 RPK 来说,这个问题并不平凡;这是一个完全合理的问题,属于特定技术编程问题的范畴。 "合法的计算机科学" 问题根本就不应该发布到 StackOverflow 上;StackOverflow 是用于提问关于编程计算机的问题的。计算机科学并不等同于编程。 "合法的计算机科学问题" 应该发布到 cstheory.stackexchange.com。 - Eric Lippert
2
@Eric Lippert 虽然我的措辞可能不太准确,因为英语不是我的母语,但我指的是编程方面的问题。我仍然觉得这是一个琐碎的问题! - Srinivas Reddy Thatiparthy
6个回答

19

在接口类型之间使用逗号,例如:

class Student: IPersonalDetails, IOtherDetails
{
      //Code
}

9

将其更改为

class Student: IPersonalDetails, IOtherDetails
{
  //Code
}

5
是的,它可以。仔细检查一下你的语法即可。

在我看来,指向正确的方向通常比给出正确答案本身更有帮助。因为使用自己的大脑比使用别人的大脑更有锻炼作用。 - OlimilOops

1

是的!你绝对可以。你甚至可以实现超过2个接口。我不确定你一次可以实现多少个接口。


0

是的,一个类肯定可以实现多个接口。毕竟,这就是接口的全部意义。

看一下你得到的错误信息。它并没有告诉你一个类不能实现多个接口。它告诉你有一个语法错误。


-1

是的,或者像这样,它当然针对完全不同的设计目标,你可以说由于继承的多态性质实际上仍然只有一个接口,但是:

public interface IEntity 
{
    void DoTask();
}

public interface IExtendedTaskEntity : IEntity
{
    void DoExtendedTask();
}

public class ConcreteEntity : IExtendedTaskEntity 
{

    #region IExtendedTaskEntity Members

    public void DoExtendedTask()
    {
        throw new NotImplementedException();
    }

    #endregion

    #region IEntity Members

    public void DoTask()
    {
        throw new NotImplementedException();
    }

    #endregion
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接