Java,无法降低从对象继承的方法的可见性
继续这个问题:为什么不能降低Java子类中方法的可见性?
我需要创建B
几乎与class相同的类A
,除了B
不能做某些可以做的事情A
。
作为一个懒惰的程序员,我试图继承A
,只是为了迎接B
无法降低A
方法可视性的错误。h!..
现在A
是供应商提供的API,我的意图是封装此API,以便更易于使用。
我想知道解决此问题的最佳实践是什么?
回答:
两种选择:
如果您需要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.");
}
}
或者,如果您确实希望的API是的API的B
子集A
,则只需B
包含的实例A
,并适当地委托方法调用即可。
public class A {
public int allowedMethod() { ... }
public int forbiddenMethod() { ... }
}
public class B
{
private A a;
public int allowedMethod()
{
return a.allowedMethod();
}
}
以上是 Java,无法降低从对象继承的方法的可见性 的全部内容, 来源链接: utcz.com/qa/410434.html