实现接口时限制方法

时间:2013-11-14 06:24:29

标签: java interface restrict

我在界面中有两种方法:

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

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

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

我可以在实现界面时限制其中一个吗?

7 个答案:

答案 0 :(得分:0)

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

除非它是抽象的。

查看this discussion了解详情。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

除非实施interface的班级为interface,否则您必须实施abstract的所有方法。

如果通过限制表示您要预定义一种或多种方法,则可以使用abstract class代替interfaceabstract 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(回应其他评论)
为一个用户类提供附加功能似乎是仅使用具有附加功能的“超级用户”类扩展“普通用户类”的完美应用程序。如果您需要“超级用户”类的接口,您可以创建一个扩展“普通用户”类实现的接口的接口。

答案 3 :(得分:0)

abstract类外,您必须实现所有接口方法。

答案 4 :(得分:0)

你不能对Interface赋予限制,但是你可以在Abstract类中实现,在具体类中可以实现NO。

答案 5 :(得分:0)

一些解决方案:

  • 将该类标记为abstract.但在这种情况下,您无法实例化您的实现类。
  • 只需在课堂上添加黑色实现。

答案 6 :(得分:0)

不确定“限制”是什么意思。你必须实现这个方法。但是,你可以简单地做

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

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