例如,一个类有public do,打包do,protected do和private do。如果一个类调用的实例得到私有的,如果一个子类调用它,那么它会受到保护,如果同一个包调用它,那么它会被打包,如果还有什么调用它,它会被公开?
答案 0 :(得分:3)
答案 1 :(得分:2)
class A
{
public Object do() { ... }
protected Object do() { ... }
Object do() { ... }
private Object do() { ... }
}
没有。这不会在有或没有子类的情况下编译。也不应该期待它。编译器如何知道调用哪个方法?这是不可能的。
为了使它更清晰一点,一个更有特色的重载 - 一个返回除Object
以外的其他类型的重载甚至不是可接受的重载,因为编译器仍然无法确定调用哪个方法。 弱形式的重载甚至更不可接受。
答案 2 :(得分:1)
没有。这是一个包含其标识的元素(就像您不能重载方法的名称或返回类型一样)。您只能重载传递给方法的变量。
如果您尝试将方法设为public,其超级方法是私有的,则会出现编译器错误,并且您的程序将无法运行。
答案 3 :(得分:0)
不,因为这些方法都有相同的method signature:
Definition: Two of the components of a method declaration comprise the method
signature — the method's name and the parameter types.
编译器只能根据签名区分方法。