我在界面中有两种方法:
public interface MyInterface {
public void methodOne();
public void methodTwo();
}
public class MyClass implements MyInterface{
public void methodOne(){
//implementation code
}
public void methodTwo(){
//implementation code
}
}
我可以在实现界面时限制其中一个吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用abstract class
;他们不需要实现所有的整个界面。但是,它们无法实例化。您必须实现所有方法才能实例化接口的实现。
答案 2 :(得分:0)
除非实施interface
的班级为interface
,否则您必须实施abstract
的所有方法。
如果通过限制表示您要预定义一种或多种方法,则可以使用abstract class
代替interface
。 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(回应其他评论):
为一个用户类提供附加功能似乎是仅使用具有附加功能的“超级用户”类扩展“普通用户类”的完美应用程序。如果您需要“超级用户”类的接口,您可以创建一个扩展“普通用户”类实现的接口的接口。
答案 3 :(得分:0)
除abstract
类外,您必须实现所有接口方法。
答案 4 :(得分:0)
你不能对Interface赋予限制,但是你可以在Abstract类中实现,在具体类中可以实现NO。
答案 5 :(得分:0)
一些解决方案:
abstract.
但在这种情况下,您无法实例化您的实现类。答案 6 :(得分:0)
不确定“限制”是什么意思。你必须实现这个方法。但是,你可以简单地做
public void method1(someargs) {
throw new UnsupportedOperationException();
}
正如许多Collection实现所做的那样。