11 接口常量的用途是什么? 我正在学习Java,只是发现接口可以包含公共静态字段和最终字段。到目前为止,我还没有看到这些示例。这些接口常量有哪些用例,我可以在Java标准库中看到吗? 123 java interface constants
12 Java接口中的可选方法 据我了解,如果您使用Java实现接口,则实现该接口的子类必须使用该接口中指定的方法。 我注意到在某些接口(例如Collection接口)中,有一些方法被注释为可选方法,但这到底是什么意思?我觉得接口中指定的所有方法都需要吗? 120 java methods interface
4 从通用基类继承,应用约束并在C#中实现接口 这是一个语法问题。我有一个泛型类,它是从泛型基类继承的,并且将约束应用于类型参数之一。我还希望派生类实现一个接口。对于我的一生,我似乎无法找出正确的语法。 这就是我所拥有的: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { ... } 我想到的第一件事是: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { ... } 但这是不正确的,因为这导致T2需要同时实现IBar和IFoo,而不是DerivedFoo来实现IFoo。 我尝试了一些谷歌搜索,冒号,分号等的使用,但是结果却很短。我确定答案很简单。 117 c# generics inheritance interface constraints
16 接口和类之间的区别是什么?为什么可以在类中直接实现方法,为什么要使用接口? 我知道这是一个非常基本的问题,但是一个面试官以非常棘手的方式问我,我很无助:( 我只知道接口的材料或理论定义,并且在我从事的许多项目中也都实现了它。但是我真的不明白为什么这样做有用。 我也不了解界面中的一件事。即例如,我们使用 conn.Dispose();在最后块。但是我看不到该类正在实现或继承IDisposableinterface(SqlConnection)类。我想知道如何才能调用方法名称。同样,我也不了解Dispose方法的工作原理,因为我们需要为所有接口方法使用自己的实现来实现函数体。那么接口如何被接受或命名为合同呢?直到现在,这些问题一直在我脑海中浮现,坦率地说,我从未见过任何好的线索可以用我能理解的方式解释我的问题。 像往常一样,MSDN看起来非常可怕,而且没有清晰的界线(伙计们,请高水平开发的人为借口,我强烈认为任何代码或文章都应该引起任何人的注意,因此,就像许多其他人所说的那样,MSDN没用)。 面试官说: 他有5种方法,并且很乐意直接在类中实现它,但是如果您必须使用Abstract类或接口,则选择哪种方法,为什么?我确实回答了我在各种博客中读到的所有内容,并说了抽象类和接口的优缺点,但是他不相信,他是在总体上试图理解“为什么使用接口”。即使我只能一次实现相同的方法,也不能改变它,但一般来说,“为什么抽象类”还是如此。 我在网络上看不到任何地方,我可以得到一篇文章来清楚地向我解释接口及其功能。我是众多程序员之一,他们仍然不了解接口(我知道我使用的理论和方法),但不满意我清楚地了解它。 117 c# class oop interface abstraction
10 Java的接口和Haskell的类型类:区别和相似之处? 当我学习Haskell时,我注意到它的type class,这应该是源自Haskell的伟大发明。 但是,在Wikipedia页面上,类型为class: 程序员通过指定一组函数或常量名称以及它们各自的类型来定义类型类,对于每个属于该类的类型,它们必须存在。 这似乎与Java的界面非常接近对我来说,(引用Wikipedia的Interface(Java)页面): Java编程语言中的接口是一种抽象类型,用于指定类必须实现的接口(在通用意义上)。 这两个看起来很相似:类型类限制类型的行为,而接口限制类的行为。 我想知道Haskell中的类型类和Java中的接口之间有什么区别和相似之处,或者根本上有区别吗? 编辑:我注意到什至haskell.org也承认它们是相似的。如果它们是如此相似(或者是?),那么为什么用此类炒作来处理类型class? 更多编辑:哇,这么多好答案!我想我必须让社区决定哪一个是最好的。但是,在阅读答案时,所有的人似乎都只是说:“ typeclass可以做很多事情,而interface不能或不必应付泛型”。我不禁想知道,接口有什么可以做而类型类不能做吗?另外,我注意到Wikipedia声称typeclass最初是在1989年的论文中发明的*“如何使ad hoc多态性减少ad hoc”,而Haskell仍处于摇篮中,而Java项目始于1991年并于1995年首次发布因此,也许不是typetype与接口类似,而是接口受typeclass影响?是否有任何文件/文件支持或反对?感谢所有答案,它们都非常有启发性! 感谢您的所有投入! 112 java haskell interface typeclass
5 有没有办法在ES6 /节点4中创建接口? ES6在Node 4中完全可用。我想知道它是否包含接口的概念来定义方法协定(如)MyClass implements MyInterface。 我在Google搜索中找不到很多,但也许有不错的技巧或解决方法。 110 javascript node.js interface ecmascript-6
7 将List <T>强制转换为List <Interface> public interface IDic { int Id { get; set; } string Name { get; set; } } public class Client : IDic { } 我怎样才能投List<Client>来List<IDic>? 109 c# .net interface casting
7 是否应该在实现中添加Javadoc注释? 在界面中添加Javadoc注释并在实现中添加非Javadoc注释是否正确? 当您自动生成注释时,大多数IDE都会为实现生成非JavaDoc注释。具体方法不应该有描述吗? 109 java interface comments javadoc
6 为什么C#接口方法没有声明为抽象或虚拟的? 接口中的C#方法在不使用virtual关键字的情况下被声明,并且在派生类中被覆盖而未使用override关键字。 是否有一个原因?我认为这只是一种语言上的方便,显然CLR知道如何在后台进行处理(默认情况下方法不是虚拟的),但是还有其他技术原因吗? 这是派生类生成的IL: class Example : IDisposable { public void Dispose() { } } .method public hidebysig newslot virtual final instance void Dispose() cil managed { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method Example::Dispose 注意,该方法virtual final在IL中声明。 108 c# methods interface abstract virtual-functions
2 为什么Java类不从实现的接口继承注释? 我一直在使用Guice的AOP来拦截一些方法调用。我的课程实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法。即使使用继承的注释对注释类型进行注释,实现类也不会继承Inherited的java doc中所述的注释: 另请注意,此元注释仅使注释从超类继承;已实现的接口上的注释无效。 这可能是什么原因?了解对象的类在运行时确实实现的所有接口并不是一件难事,因此,在做出此决定后一定有充分的理由。 108 java inheritance interface annotations guice
16 面向对象编程中“接口”的定义是什么 好的,我的一个朋友来回探讨编程中“接口”的含义。 什么是“接口”的最佳描述。 对我来说,接口是类的蓝图,这是最好的定义吗? 108 oop interface definition
2 接口常数的优缺点 已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 PHP接口允许在接口中定义常量,例如 interface FooBar { const FOO = 1; const BAR = 2; } echo FooBar::FOO; // 1 任何实现类都会自动提供这些常量,例如 class MyFooBar implement FooBar { } echo MyFooBar::FOO; // 1 我自己的观点是,全球都是邪恶的。但是我想知道接口常数是否同样适用。给定接口编码是一种好习惯,使用接口常量是在类上下文之外可以接受的唯一常量吗? 尽管我很想听听您的个人意见以及是否使用接口常量,但我主要是在寻找答案的客观原因。我不希望这成为投票类型的问题。我对使用接口常量对可维护性有什么影响很感兴趣。耦合。或单元测试。它与SOLID PHP有何关系?它违反任何被认为是PHP良好实践的编码原则吗?你明白了... 注意: Java也有一个类似的问题,其中列出了一些非常好的理由来说明它们是“不良实践”的原因,但是由于Java不是PHP,所以我觉得有理由再次在PHP标签中提出问题。 105 php interface constants
2 转到界面字段 我熟悉一个事实,在Go中,接口定义功能而不是数据。您在接口中放置了一组方法,但是您无法指定实现该接口的任何内容所必需的任何字段。 例如: // Interface type Giver interface { Give() int64 } // One implementation type FiveGiver struct {} func (fg *FiveGiver) Give() int64 { return 5 } // Another implementation type VarGiver struct { number int64 } func (vg *VarGiver) Give() int64 { return vg.number } 现在我们可以使用该接口及其实现: // A function … 105 struct interface go