C# 如果类正在使用接口,则它必须

C# 如果类正在使用接口,则它必须,c#,class,inheritance,interface,C#,Class,Inheritance,Interface,如果类正在使用接口,则它必须: (1) 继承接口的属性 (2) 包含与接口相同的方法 (3) 创建接口对象 (4) 所有这些 正确答案是(4)以上所有内容 注意:这是一个问题,我不知道谁是问题的作者 我同意第(1)条和第(2)条,但我会就第(3)条的措辞进行争论 我想它可以被双重解释 创建接口对象可能意味着只是继承接口的类的实例 或 接口类型的引用变量 正确的解释方法是什么 下面这句话有意义吗 如果类正在使用接口,则它必须: (1) 继承接口的属性 (2) 为接口公开的所有方法提供实现

如果类正在使用接口,则它必须:

  • (1) 继承接口的属性

  • (2) 包含与接口相同的方法

  • (3) 创建接口对象

  • (4) 所有这些

正确答案是(4)以上所有内容

注意:这是一个问题,我不知道谁是问题的作者

我同意第(1)条和第(2)条,但我会就第(3)条的措辞进行争论

我想它可以被双重解释

创建接口对象可能意味着只是继承接口的类的实例

接口类型的引用变量


正确的解释方法是什么

下面这句话有意义吗

如果类正在使用接口,则它必须:

  • (1) 继承接口的属性

  • (2) 为接口公开的所有方法提供实现

  • (3)

  • (4) 所有这些

(2) 为接口公开的所有方法提供实现

不可以。抽象类可以在不提供实现的情况下实现接口(它们仍然必须声明接口中定义的方法,但不必提供主体)

但我也不知道如何解释数字3。当你浏览你提供的链接时,这只是一个措辞糟糕的问题。我仍在试图弄清楚这意味着什么:

  • 代码公共类B:A{}的输出是什么
    • 错误
    • 它定义了一个类,该类只继承
    • 它定义了一个类,该类继承了的所有方法,但不能访问私有成员
    • b和c

  • 我想你只是误读了一些东西。我认为那篇文章告诉我的是

    (1) 为了实现一个类,以便您可以创建一个作为该类实例的对象,该类的每个方法和实现的接口都必须是具体的——必须完全实现

    (2) 因为接口与对象实例相关联,所以在访问关联的方法之前,对象实例必须实际存在

    我并没有看到它说得更深刻或更清楚。您所问的这一行似乎正说明了第二点:要实际使用接口方法,您需要有一个关联类的对象,在该对象上可以调用这些方法


    这是因为C#中的接口不支持静态方法。所以所有的方法都是实例方法。。。因此,如果没有相关对象,就不能“使用”接口——接口的实例,或者“接口对象”,因为它们似乎在这里使用该术语。

    由于属性是方法,1实际上只是2的特例;我不确定是否有任何合理的方式来解释3。。。这可能是不应该的。还要定义“使用”这个词。这可能是“工具”的意思吗?否则,“使用”也可能意味着“使用一个类通过它的接口实现一个接口”…这个问题的措辞很糟糕。类“实现”接口,而不是“使用”接口。也许(3)是一种可怕的说法,它表示实现接口的类不能是静态的。如果你说“使用接口”,我会想到一个具有接口类型的属性。我点击了上面的几个问题,所有问题的措辞都同样糟糕。我不会注意那个网站。@mehow有些答案完全是错的。我认为这个测试造成的混乱比帮助任何人都多。而且扩展另一个接口的接口不必实现这些功能。你是对的。这个测试来自的网站是一个糟糕的资源,我不应该把它提到堆栈溢出。@Functor这个问题专门讨论一个类。我也不确定我是否会将使用显式接口实现的类视为“继承”成员(包括属性)抽象类仍然必须声明继承的接口成员。例如,
    抽象类X:IDisposable{}
    是非法的。但是
    抽象类Y:IDisposable{public abstract void Dispose();}
    应该可以。你和那个网站做的一样:你滥用了术语。什么是“实现对象”,什么是“关联类”,什么是“实现的接口必须是具体的”?术语是存在的,所以我们都知道我们在谈论同一个术语。无意冒犯,但你在胡说八道,就像那个网站一样。“如果一个类正在使用一个接口,那么它必须创建一个接口对象”这句话很简单,没有任何意义。CodeCaster,你陷入了一种陷阱,我认为这对那些提出合法问题的人是没有帮助的。由于对术语的解释过于狭隘,你就没有建设性。我在康奈尔大学每年教1000名学生Java和C#,我认为你在这个职位上学到的一件事就是对其他人使用的语言要有一点灵活性。记住,并不是每个人都是以英语为母语的。因此,我们在教学时的工作包括试图理解问题的意图。仅仅因为一个问题是用“白话文”提出的就不予理睬是不公平的。现在,一个问题怎么可能是建设性的呢?通过认识到“实现一个对象”显然是“实现一个类型,然后实例化它来创建一个对象实例”的缩写,我们不需要因为人们使用明显的、常见的缩写而责备他们!这样做是非常狭隘的,而不是教问问题的人一些东西,只是主张对术语的一种僵化。这个人提出的问题是完全合理的。他或她很简单