使用多个类实现一个接口

我在接受采访时问了这个问题。 我在这里厌倦了谷歌搜索。

我有100个方法的接口。 我不想在一个类中实现所有这100个方法。 有没有办法通过使用多个类而不重复实现来实现这100个方法?

例如:A类实现前10个方法(仅限)。 B类实现接下来的10个方法(仅限),依此类推。

注意:1。实现接口的所有类必须具体。

至于我对java的了解,这是不可能的。 当他问我这个问题时,他提到了适配器。 这让我觉得有办法做到这一点。

任何人都可以澄清一下吗?

编写一个具有100个方法的空实现的适配器

class Adapter{ //write your empty implementations here as similar to KeyListener in Java // They have written a keyAdapter and make use of key adapter. } ie) class Adapter implements interface1{ public void method1(){} public void method2(){} ..... } 

您可以在其他类中扩展适配器类,只需覆盖这些方法即可。

 class A extedns Adapter{ public void method1(){ } } 

即)

您描述的概念称为部分类,Java没有这样的概念。

这是一个类似的答案: 一种在java中实现部分类的方法

如果使用Java 8,则可以在界面中为100种方法定义默认实现,例如:

 public interface MyInterface{ void methodA(); int methodB(); default boolean methodC(String name) { return name.equals("Default"); } } 

然后在您的具体类中,您只实现所需的方法。 所有其他未覆盖的方法将使用接口的默认实现。

您将不得不在接口中编写100个默认实现,但它将节省您在实现该接口的每个具体类中编写100个实现的需要。

同样,这仅在Java 8之后可用。

编写所有类( ABCDE每个实现20种方法),在不实现接口I情况下相互扩展:

  I | A <- B <- C <- D <- E 

只有最后一个实现了接口。

更简单的例子只有两种方法:

 public interface I { void a(); void b(); } public class A { public void a() { } } public class B extends A implements I { public void b() { } } 

你是对的 – 任何具体的类都必须实现所有的方法,所以你不能做到的唯一方法是扩展实现给定接口的类并覆盖子类中的一些方法或实现从其他类调用实现的方法

如果接口方法定义为默认实现;

 public interface I { default void a(){ //implementation } default void b(){ //implementation } default void c(){ //implementation } //97 more } public class A implements I{ @override public void a() { } } public class B extends A { @override public void b() { } public class C extends B { @override public void c() { } } 

即使没有inheritance类,也可以彼此独立,并且它们可以为不同的方法提供实现