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

回到顶部