gpt4 book ai didi

Java,无法降低从对象继承的方法的可见性

转载 作者:太空狗 更新时间:2023-10-29 23:00:56 25 4
gpt4 key购买 nike

从这个问题继续:Why can't you reduce the visibility of a method in a Java subclass?

我需要创建与类 A 几乎相同的类 B,除了 B 不能做 A 的某些事情 可以。

作为一个懒惰的程序员,我试图继承A,却遇到了B无法降低A可见性的错误> 方法。呃!..

现在A是一个供应商的API,我的目的是将这个API封装起来,以便于使用。

我想知道解决此问题的最佳做法是什么?

最佳答案

两种选择:

如果您需要 B 保持与 A 相同的接口(interface)(以便客户端代码可以使用两者中的任何一个而无需更改),您可以覆盖“禁止”方法在 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 的实例,并适本地委托(delegate)方法调用。

    public class A
{
public int allowedMethod() { ... }
public int forbiddenMethod() { ... }
}

public class B
{
private A a;

public int allowedMethod()
{
return a.allowedMethod();
}
}

关于Java,无法降低从对象继承的方法的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com