Questions tagged «interface»

接口是指与组件交互的指定点。接口在硬件和软件级别均适用。---它也指语言元素“接口”,这是Java,C#和类似语言中单继承的唯一例外。


30
接口vs抽象类(通用OO)
最近,我接受了两次电话采访,有人问我接口和抽象类之间的区别。我已经解释了我可以想到的各个方面,但是似乎他们正在等我提及一些特定的内容,我不知道它是什么。 根据我的经验,我认为以下是对的。如果我缺少要点,请告诉我。 接口: 接口中声明的每个方法都必须在子类中实现。接口中只能存在事件,委托,属性(C#)和方法。一个类可以实现多个接口。 抽象类: 子类仅必须实现Abstract方法。Abstract类可以具有实现的常规方法。抽象类在事件,委托,属性和方法旁边也可以具有类变量。由于C#中不存在多重继承,一个类只能实现一个抽象类。 毕竟,面试官提出了一个问题:“如果您有一个仅包含抽象方法的Abstract类,该怎么办?与接口有什么不同?” 我不知道答案,但我认为这是上面提到的继承对吗? 另一个面试官问我,如果接口内有一个Public变量,那和Abstract Class有什么不同?我坚持认为,接口内不能有公共变量。我不知道他想听什么,但他也不满意。 另请参阅: 何时使用接口代替抽象类,反之亦然 接口与抽象类 您如何决定使用抽象类和接口? 接口和抽象类之间有什么区别?

30
“编程到接口”是什么意思?
我已经看过几次这个问题了,我不清楚它是什么意思。您何时以及为什么要这样做? 我知道接口的作用,但是我不清楚这一点,这让我觉得我错过了正确使用它们的机会。 如果要这样做,是否只是这样: IInterface classRef = new ObjectWhatever() 您可以使用任何实现的类IInterface吗?您什么时候需要这样做?我唯一能想到的是,如果您有一个方法,并且不确定要实现的对象将传递什么对象IInterface。我不认为您需要多久这样做一次。 另外,如何编写一个方法来接受实现接口的对象?那可能吗?


30
接口与基类
什么时候应该使用接口,什么时候应该使用基类? 如果我不想实际定义方法的基本实现,是否应该始终是一个接口? 如果我有猫狗班。为什么我要实现IPet而不是PetBase?我可以理解具有用于ISheds或IBarks(IMakesNoise?)的接口,因为可以将它们逐个放置在每个宠物上,但是我不知道该为通用Pet使用哪个接口。


12
C#接口。隐式实现与显式实现
在C#中隐式和显式实现接口有何区别? 什么时候应该使用隐式,什么时候应该使用显式? 彼此之间是否有优点和/或缺点? Microsoft的官方指南(来自第一版Framework Design Guidelines)指出,不建议使用显式实现,因为它会给代码带来意想不到的行为。 我认为,在您未将事物作为接口传递的情况下,该指南在IoC之前非常有效。 任何人都可以谈谈这方面吗?
632 c#  .net  interface 




24
为什么不能在Java接口中定义静态方法?
编辑: 从Java 8开始,接口中现在允许使用静态方法。 这是示例: public interface IXMLizable<T> { static T newInstanceFromXML(Element e); Element toXMLElement(); } 当然这行不通。但是为什么不呢? 可能的问题之一是,当您致电时会发生什么: IXMLizable.newInstanceFromXML(e); 在这种情况下,我认为它应该只调用一个空方法(即{})。所有子类都将被强制实现static方法,因此在调用static方法时它们都很好。那为什么不可能呢? 编辑:我想我正在寻找比“因为这就是Java的方式”更深的答案。 有某种特殊的技术原因为什么不能覆盖静态方法?也就是说,为什么Java的设计者决定使实例方法可重写而不是静态方法? 编辑:我的设计的问题是我试图使用接口来强制执行编码约定。 也就是说,该接口的目标是双重的: 我希望IXMLizable接口允许我将实现它的类转换为XML元素(使用多态性,效果很好)。 如果有人想创建实现IXMLizable接口的类的新实例,那么他们将始终知道将有一个newInstanceFromXML(Element e)静态构造函数。 除了在界面中添加注释之外,还有其他方法可以确保这一点吗?


29
我应该如何解释接口和抽象类之间的区别?
在我的一次采访中,我被要求解释Interface和Abstract类之间的区别。 这是我的回应: Java接口的方法是隐式抽象的,不能具有实现。Java抽象类可以具有实现默认行为的实例方法。 在Java接口中声明的变量默认为final。抽象类可能包含非最终变量。 默认情况下,Java接口的成员是公共的。Java抽象类可以具有类成员的常用风格,例如private,protected等。 Java接口应使用关键字“ implements”来实现;Java抽象类应使用关键字“ extends”进行扩展。 一个接口只能扩展另一个Java接口,一个抽象类可以扩展另一个Java类并实现多个Java接口。 Java类可以实现多个接口,但只能扩展一个抽象类。 但是,面试官并不满意,并告诉我该描述表示“ 书本知识 ”。 他要求我提供更实际的答复,并通过实际示例说明何时在接口上选择抽象类。 我哪里做错了?

15
我们应该@Override接口的方法实现吗?
实现接口方法的方法是否应带有注释@Override? 注释的JavadocOverride说: 指示方法声明旨在覆盖超类中的方法声明。如果使用此注释类型对方法进行注释但未覆盖超类方法,则要求编译器生成错误消息。 我认为接口从技术上讲不是超类。还是? Question Elaboration


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.