1

我在接口中有两种方法:

public interface MyInterface {  
    public void methodOne(); 
    public void methodTwo();
}

public class MyClass implements MyInterface{    
    public void methodOne(){
       //implementation code    
    }

    public void methodTwo(){
       //implementation code    
    } 
}

我可以在实现接口时限制其中一个吗?

4

7 回答 7

0

几个解决方案:

  • 要么将类标记为abstract.但在这种情况下,您无法实例化您的实现类。
  • 只需在您的课程中添加黑色实现。
于 2013-11-14T06:31:47.493 回答
0

不知道你所说的“限制”是什么意思。您必须实现该方法。但是,你可以简单地做

public void method1(someargs) {
   throw new UnsupportedOperationException();
}

正如许多 Collection 实现所做的那样。

于 2013-11-14T06:31:48.533 回答
0

不,如果您的类实现了接口,则必须实现所有方法。

除非它是抽象的。

检查此讨论以获取更多详细信息。

于 2013-11-14T06:27:20.387 回答
0

您可以使用abstract class; 他们不需要实现所有的整个接口。但是,它们不能被实例化。您必须实现所有方法才能实例化接口的实现。

于 2013-11-14T06:27:48.733 回答
0

你必须实现你的所有方法interface,除非实现的类interfaceabstract

如果通过限制您的意思是您想要预定义一个或多个方法,那么您可以使用 anabstract class而不是interface. an 中的抽象方法abstract class是必须由任何扩展abstract class. 非抽象方法实际上是在abstract class, 本身中实现的。

例如,

public abstract class MyClass 
{  
    abstract void methodOne(); 

    void methodTwo()
    { 
       //implementation code
    }
}

public class MyOtherClass extends MyClass
{    
    void methodOne()
    {
       //implementation code    
    }
}

这是Abstract Classes and Methods的参考。

编辑1(回应评论):
我不太确定你所说的负担是什么意思。我要说的是,如果您希望所有方法都由该类实现,那么请使用接口。

如果你只想要一个类实现的一些方法,那么你可以使用抽象类而不是接口

或者

如果有意义的话,让一个抽象类(部分地)实现接口,然后让其余的方法由抽象类的扩展来实现。

两种方法都是合理的。这取决于你真正需要做什么。

编辑 2(针对附加评论)
为一个用户类提供附加功能似乎是一个完美的应用程序,只需使用具有附加功能的“超级用户”类扩展“普通用户类”。如果您需要“超级用户”类的接口,您可以创建一个扩展“普通用户”类实现的接口的接口。

于 2013-11-14T06:28:30.043 回答
0

除了abstract类,你必须实现接口的所有方法。

于 2013-11-14T06:28:58.213 回答
0

您不能对接口进行限制,但是可以在抽象类中实现,在具体类中实现否。

于 2013-11-14T06:30:06.303 回答