Java 空体的接口实现
我有一个这样的用例Java 空体的接口实现,java,interface,Java,Interface,我有一个这样的用例 interface i { void method1(); void method2(); } class A implements i { void method1() { System.out.println("Method1 A .."); } void method2() { System.out.println("Method2 A .."); } } class B implements i { voi
interface i {
void method1();
void method2();
}
class A implements i {
void method1() {
System.out.println("Method1 A ..");
}
void method2() {
System.out.println("Method2 A ..");
}
}
class B implements i {
void method1() {
System.out.println("Method1 B ..");
}
//Assume : B does not know how to implement method2
//void method2() {
//}
}
我知道类B可以是抽象的,不能为接口I实现method2
通常的做法是,如果我不希望我的类B是抽象的,如果它没有任何method2的实现,就从method2抛出异常?如果你不打算从接口实现一个方法,你可以抛出一个UnsupportedOperationException。实际上,如果可能的话,应该避免这种情况,也许可以重新考虑设计。如果您不打算从接口实现方法,可以抛出一个不支持的操作异常。确实,如果可能的话,应该避免这种情况,也许可以重新考虑设计。如果B不知道如何实现方法2,那么您的接口就有点错误。您需要一个没有method2的更通用的接口,可能还需要一个包含method to的扩展接口,但它不是由B实现的。如果B不知道如何实现method2,那么您的接口就有点错误。您需要一个没有method2的更通用的接口,可能还需要一个包含method to的扩展接口,但它不是由B实现的。如果您没有完全实现接口的所有必需方法,则不应该实现该接口。看起来你实际上想做的是:
interface top
{
void method1();
}
interface next extends top
{
void method2();
}
class A implements next
{
public void method1()
{
... something ...
}
public void method2()
{
... something ...
}
}
class B implements top
{
public void method1()
{
... something ...
}
}
如果没有完全实现接口的所有必需方法,则不应该实现该接口。看起来你实际上想做的是:
interface top
{
void method1();
}
interface next extends top
{
void method2();
}
class A implements next
{
public void method1()
{
... something ...
}
public void method2()
{
... something ...
}
}
class B implements top
{
public void method1()
{
... something ...
}
}
在标准Java库中有一些关于这一点的先例。其中一些最值得注意的是迭代器接口中的“remove”方法,它抛出UnsupportedOperationException。请记住记录接口,说明抛出此异常是允许的。在标准Java库中有一些这样的规则。其中一些最值得注意的是迭代器接口中的“remove”方法,它抛出UnsupportedOperationException。请记住记录接口,说明抛出此异常是允许的。可能存在这样的情况,即您不拥有接口,也无法控制它。也可能存在这样的情况,即您不拥有接口,也无法控制它。您是指java.lang.UnsupportedOperationException吗?您的意思是java.lang.UnsupportedOperationException?