gpt4 book ai didi

java - 在 Java 中重写私有(private)方法对代码输出没有影响。为什么?

转载 作者:行者123 更新时间:2023-12-02 05:29:09 30 4
gpt4 key购买 nike

我在 Java 中测试了以下代码,看看重写私有(private)方法的实现时会发生什么。

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */

class Superclass {

public void runDo() {
this.doSomething();
}

private void doSomething() {
System.out.println("from Superclass");
}
}

class Subclass extends Superclass {

private void doSomething() {
System.out.println("from Subclass");
}

}

class Runner {

public static void main(String[] args) {

Superclass superSuper = new Superclass();
Superclass superSub = new Subclass();
Subclass subSub = new Subclass();

superSuper.runDo();
superSub.runDo();
subSub.runDo();
}
}

上述示例的输出为

from Superclass

from Superclass

from Superclass

虽然我期待类似的事情

from Superclass

from Subclass

from Subclass

有人可以解释一下这种行为以及为什么它有意义吗?

最佳答案

不能重写私有(private)方法。您必须将其声明为默认、 protected 或公开以实现您想要的行为。

我建议阅读 access modifiers 上的 Java 文档

关于java - 在 Java 中重写私有(private)方法对代码输出没有影响。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25711828/

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