两个选项:
如果您需要B保持与A相同的界面(以便客户端代码可以使用任何两个而不进行任何更改),您可以覆盖B中的“禁止”方法,并使它们抛出UnsupportedOperationException异常.例如:
public class A
{
public int allowedMethod() { ... }
public int forbiddenMethod() { ... }
}
public class B extends A
{
public int forbiddenMethod()
{
throw new UnsupportedOperationException("Sorry, not allowed.");
}
}
或者,如果您真的希望B的API成为A的API的一个子集,那么只有B包含A的实例,并适当地委派方法调用.
public class A
{
public int allowedMethod() { ... }
public int forbiddenMethod() { ... }
}
public class B
{
private A a;
public int allowedMethod()
{
return a.allowedMethod();
}
}