gpt4 book ai didi

java - 在 Java 中重载私有(private)方法

转载 作者:搜寻专家 更新时间:2023-11-01 04:07:48 26 4
gpt4 key购买 nike

我想弄清楚这件事:重载适用于子类/父类(super class)中的方法,还是仅适用于可以重载的一个类的方法?

public class Super{

private void method(){
}
}

class Sub extends Super{

private void method(){
}
private void method(int x){
}
}

Sub 的两种方法是否合法重载? Super的方法也重载了吗?

最佳答案

我不知道你为什么把所有方法都设为私有(private)。如果你不这样做,你的问题实际上就很有意义。考虑这段代码:

class Super{
void method() {}
}

class Sub extends Super {
void method(int x) {}
}

现在,尽管它只声明了一个,Sub 类实际上有 两个 名为 method 的方法,因此该方法是 Sub 重载Super 类不受影响,因为它仍然只有一个方法

顺便说一句,上面提到的妨碍程序正确性的最臭名昭著的例子涉及标准方法equals。初学者很想为特定类型实现它:

public class Thing {
public boolean equals(Thing that) { ...compare by object contents... }
}

但这并没有覆盖Object.equals,所以现在该类有两个equals 方法。最糟糕的是当一些代码意外地使用了特定的重载,而其他代码使用了一般的重载:

Thing t1 =  new Thing(), t2 = new Thing();
System.out.println(t1.equals(t2)); // true, great
Object o1 = t1, o2 = t2;
System.out.println(o1.equals(o2)); // now suddenly false
System.out.println(t1.equals(o2)); // false again
System.out.println(o1.equals(t2)); // still false

关于java - 在 Java 中重载私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25920330/

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