Tag: 接口

接口与抽象类

在C#中,什么时候应该使用接口,何时应该使用抽象类? 什么是决定性因素?

界面常数的优点和缺点

PHP接口允许在接口中定义常量,例如 interface FooBar { const FOO = 1; const BAR = 2; } echo FooBar::FOO; // 1 任何实现类将自动具有这些常量,例如 class MyFooBar implement FooBar { } echo MyFooBar::FOO; // 1 我自己的看法是,全球化是邪恶的 。 但是我想知道是否同样适用于接口常量。 鉴于对接口进行编码通常被认为是很好的做法,使用接口常量是唯一可以在类上下文之外使用的常量吗? 虽然我很好奇听到你的个人意见,而不pipe你是否使用接口常量,我主要是在你的答案中寻找客观的原因。 我不希望这是一个民意调查types的问题。 我对使用接口常量对可维护性有什么影响感兴趣。 耦合。 或者unit testing。 它与SOLID PHP有什么关系? 它是否违反在PHP中被认为是良好实践的任何编码原则? 你明白了 注意: 对于Java也有一个类似的问题 ,列出了一些很不好的理由,因为它们是错误的实践,但是由于Java不是PHP,所以我觉得在PHP标签中再次提出这个问题是合理的。

对于接口和类,“instanceof”操作符的行为不同

我想知道关于Java中instanceof操作符的下面的行为。 interface C {} class B {} public class A { public static void main(String args[]) { B obj = new B(); System.out.println(obj instanceof A); //Gives compiler error System.out.println(obj instanceof C); //Gives false as output } } 为什么这样? interface C和class B之间没有关系,但它给出了错误,而在obj instanceof A情况下,它给编译器错误?

为什么接口中的所有字段都是隐式的静态和最终的?

我只是想了解为什么在接口中定义的所有字段都是隐式static并且是final 。 保持字段static的想法对我来说是有意义的,因为你不能拥有一个接口的对象,但为什么它们是final (隐含的)? 任何人都知道为什么Javadevise人员将界面设置为static和final的界面?

Java接口中的可选方法

从我的理解,如果你在java中实现一个接口,在该接口中指定的方法必须由实现该接口的子类使用。 我注意到,在一些接口,如集合接口有方法被评论为可选,但究竟是什么意思? 它给我一点点,因为我认为界面中指定的所有方法将是必需的?

IntelliJ IDEA从接口跳转到Java中的实现类

在接口中创build方法后是否有一些快捷方式允许我select并跳转到实现该接口的类?

为什么java类不会从已实现的接口inheritance注释?

我一直在使用Guice的AOP来拦截一些方法调用。 我的类实现了一个接口,我想注释接口方法,所以Guice可以select正确的方法。 即使注释types使用了inheritance注释,实现类也不inheritanceinheritance的java文档中所述的注释: 还要注意,这个元注释只会导致注释从超类inheritance; 已实现的接口上的注释不起作用。 这可能是什么原因? 了解一个对象的类在运行时所实现的所有接口并不是那么难,因此这个决定背后必须有一个很好的理由。

什么时候有一个默认方法初始化的接口?

在searchJava语言规范来回答这个问题时 ,我了解到了这一点 在一个类被初始化之前,它的直接超类必须被初始化, 但是这个类实现的接口没有被初始化。 类似地,接口的超级接口在初始化之前不会被初始化。 为了我自己的好奇心,我尝试了它,并且如预期的那样, InterfaceType没有被初始化。 public class Example { public static void main(String[] args) throws Exception { InterfaceType foo = new InterfaceTypeImpl(); foo.method(); } } class InterfaceTypeImpl implements InterfaceType { @Override public void method() { System.out.println("implemented method"); } } class ClassInitializer { static { System.out.println("static initializer"); } } interface InterfaceType { public static […]

C#:抽象类需要实现接口?

我在C#中的testing代码: namespace DSnA { public abstract class Test : IComparable { } } 导致以下编译器错误: error CS0535: 'DSnA.Test' does not implement interface member 'System.IComparable.CompareTo(object)' 由于类Test是一个抽象类 ,为什么编译器要求它实现接口? 这个要求不应该只针对具体的课程吗?

在C#中,一个类可以从另一个类和一个接口inheritance吗?

我想知道一个类是否可以从类和接口inheritance。 下面的示例代码不起作用,但我认为它传达了我想要做的事情。 我想这样做的原因是因为在我的公司我们制造USB,串行,以太网等设备。 我正在尝试开发一个通用的组件/接口,用于为我们所有的设备编写程序,这将有助于保持所有应用程序的常见事物(如连接,断开连接,获取固件)。 要添加到这个问题:如果GenericDevice是在不同的项目,我可以把IOurDevices接口在该项目然后使USBDevice类实现接口,如果我添加一个引用到第一个项目? 因为只想引用一个项目,然后根据设备的不同而实现不同的接口。 class GenericDevice { private string _connectionState; public connectionState { get{return _connectionState; } set{ _connectionState = value;} } } interface IOurDevices { void connectToDevice(); void DisconnectDevice(); void GetFirmwareVersion(); } class USBDevice : IOurDevices : GenericDevice { //here I would define the methods in the interface //like this… void connectToDevice() { […]