Java,无法降低从对象继承的方法的可见性
从这个问题继续:为什么不能降低方法在Java子类中的可见性?
我需要创建与类几乎相同的类,除了不能做某些可以做的事情。B
A
B
A
作为一个懒惰的程序员,我试图继承,只是为了迎接错误,这不能降低方法的可见性。嘟嘟!..A
B
A
现在是来自供应商的API,我的目的是封装这个API,以便它更易于使用。A
我想知道解决这个问题的最佳实践是什么?
从这个问题继续:为什么不能降低方法在Java子类中的可见性?
我需要创建与类几乎相同的类,除了不能做某些可以做的事情。B
A
B
A
作为一个懒惰的程序员,我试图继承,只是为了迎接错误,这不能降低方法的可见性。嘟嘟!..A
B
A
现在是来自供应商的API,我的目的是封装这个API,以便它更易于使用。A
我想知道解决这个问题的最佳实践是什么?
两个选项:
如果需要保留相同的接口(以便客户端代码可以使用两者中的任何一个而无需更改),则可以重写中的“禁止”方法并让它们抛出一个 .例如: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();
}
}