Tag: 接口

为什么在Java中没有多重inheritance,但是允许实现多个接口?

Java不允许多重inheritance,但它允许实现多个接口。 为什么?

跳转到Eclipse IDE中的接口实现

你知道如何在Eclipse中,通过方法按F3将带你到它的声明? 那么我有一个方法是一个接口的一部分; 点击这个F3自然会把我带到声明界面。 显然有一个实现这个接口的对象,这是实际实现方法的地方。 我想,当我按F3 ,跳转到实现,而不是接口声明。 我知道在编译时可能不知道实现,所以Eclipse有没有办法让我看看实现这个接口的所有类,以便我可以select哪个实现的方法来查看? 现在,当发生这种情况时,我只是手动search这个来find实现的方法。

为什么我不能在接口中声明静态方法?

这个主题说的最多 – 静态方法不能在接口中声明的原因是什么? public interface ITest { public static String test(); } 上面的代码给了我下面的错误(在Eclipse中,至less):“接口方法ITest.test()的非法修饰符;只允许public和abstract”。

界面方法中的最后一个参数 – 有什么意义?

在Java中,在接口方法中定义final参数是完全合法的,不要在实现类中遵守这个参数,例如: public interface Foo { public void foo(int bar, final int baz); } public class FooImpl implements Foo { @Override public void foo(final int bar, int baz) { … } } 在上面的例子中, bar和baz在类VS接口中有相反的final定义。 以同样的方式,当一个类方法扩展另一个时,没有final限制,无论是abstract还是非abstract 。 当final方法体内部有一些实用的值时,有没有指定final方法的参数?

接口或抽象类:使用哪一个?

请解释什么时候应该使用接口,什么时候应该使用抽象类? 我怎样才能改变我的抽象类到一个接口?

Python中抽象类和接口的区别

Python中的抽象类和接口有什么区别?

在有现有的类时,接口如何取代多重inheritance的需要

首先…对不起这个职位。 我知道有很多post在stackoverflow讨论多重inheritance。 但是我已经知道Java不支持多重inheritance,而且我知道使用接口应该是另一种select。 但我不明白,看到我的困境: 我必须对用Java编写的非常大而复杂的工具进行更改。 在这个工具中,有一个由许多不同类对象和一个链接的成员层次结构构成的数据结构。 无论如何… 我有一个类Tagged有多个方法,并根据对象的类返回一个对象标记。 它需要成员和静态variables。 另一个称为XMLElement类允许链接对象,最后生成一个XML文件。 我也需要这里的成员和静态variables。 最后,我有这么多的数据类,几乎所有的应该扩展XMLElement和一些Tagged 。 好吧,这是行不通的,因为只能扩展一个类。 我经常读到,所有使用Java的东西都可以,并且不需要多重inheritance。 我相信,但我不明白接口应该如何取代inheritance。 把所有数据类中的真实实现放在一起是没有意义的,因为它每次都是一样的,但是这对接口是必须的(我认为)。 我没有看到我怎么可以改变我的inheritance类之一到一个接口。 我在这里有variables,他们必须在那里。 我真的不明白,所以请有人解释我如何处理这个?

何时使用接口或抽象类? 何时使用?

虽然某些指导方针声明,当您想要为inheritance不清楚的类定义合同( IDomesticated ),并且在类是另一个类的扩展时( Cat : Mammal , Snake : Reptile )的inheritance,您应该使用接口。 (在我看来)这些指导方针进入灰色地带的情况。 例如,说我的实施是Cat : Pet 。 Pet是一个抽象的类。 是否应该扩展到Cat : Mammal, IDomesticated Mammal是抽象类和IDomesticated是一个接口? 还是我和KISS / YAGNI的原则相冲突(即使我不确定将来会不会有一个Wolf阶级,而这个阶级是不能从Petinheritance的)? 摆脱隐喻的Cat和Pet ,让我们说我有一些代表传入数据来源的类。 他们都需要以某种方式实施相同的基地。 我可以在一个抽象的Source类中实现一些通用的代码,并inheritance它。 我也可以创build一个ISource接口(对我来说感觉更“正确”),并在每个类中重新实现generics代码(这不太直观)。 最后,我可以通过制作抽象类和接口来“吃蛋糕”。 什么是最好的? 这两种情况提出只使用抽象类,只使用一个接口,同时使用抽象类和接口。 这些都是有效的select,还是有什么“规则”,什么时候应该用于另一个? 我想澄清的是,通过“同时使用抽象类和接口”来包含它们本质上代表相同事物( Source和ISource都具有相同成员)的情况,但是该类在接口指定时添加了一般function合同。 另外值得注意的是,这个问题主要针对不支持多inheritance的语言(如.NET和Java)。

我们可以创build一个接口的对象吗?

interface TestA { String toString(); } public class Test { public static void main(String[] args) { System.out.println(new TestA() { public String toString() { return "test"; } }); } } 结果是什么? 一个testing B. null C.在运行时抛出exception。 D.编译失败,因为第1行中有错误。 E.编译失败,因为第4行有错误。 F.编译失败,因为第5行有错误。 这个问题的答案是什么?为什么? 我还有一个关于这个问题的查询。 在第4行中,我们创build了一个对象A.是否可以创build一个接口的对象?

为什么父类和子类都实现相同的接口?

我inheritance了一些传统的Java(1.4)代码,这个devise决定经常出现。 我不明白是否有任何目的或理由。 public interface SoapFacade extends iConfigurable{ } public class SoapFacadeBase implements SoapFacade{ … } public class SoapFacadeImpl extends SoapFacadeBase implements SoapFacade{ … } 正如我所了解的接口(我的实验已经加强),没有任何目的是让父母和孩子都实现相同的接口。 在这种情况下, SoapFacade所有内容都是在SoapFacade中实现的,但是在iConfigurable的方法是在iConfigurable中实现的。 但是,这并不需要SoapFacadeImpl实现SoapFacade 。 有什么我不知道的接口,会给这种模式一些目的或利益? 除了缺乏清晰度之外,是否有潜在的成本推动重构呢? 还是应该简单地重构清晰/简单?