gpt4 book ai didi

java - java中私有(private)方法的重写

转载 作者:行者123 更新时间:2023-12-01 16:47:35 25 4
gpt4 key购买 nike

我试图理解java中的方法重写。了解私有(private)方法不能被重写。

public class Superclass 
{
private String name;

Superclass(String name) {
this.name=name;
}

private void printName(String name) {
System.out.println("This is a Superclass output"+name);
}
}

public class Subclass extends Superclass
{
Subclass(String name) {
super(name);
}

public void printName(String name) {
System.out.println(name);
}
}
public static void main (String[] args) {
Superclass sb = new Subclass("Superclass");
//System.out.println(sb.getClass().getName());
sb.printName("this is super class variable");
}

我正在尝试执行这段代码和输出:“这是一个父类(super class)输出,这是父类(super class)变量”

请帮我理解 object sb 实际上指的是哪个类。当 printName 在父类(super class)中公开时,我看到的输出是:

“这是父类(super class)变量”

还请帮助我理解为什么 sb 根据修饰符 private 和 public 指向两个不同的类。

最佳答案

重写是运行时(动态)多态性。我们不能重写私有(private)方法。所以私有(private)方法使用静态绑定(bind)。静态绑定(bind)方法不与特定对象关联,而是在 Type(Java 中的类)上调用。

当我们将父类方法设为公共(public)时,就会发生动态绑定(bind)。在运行时,对象的类型决定了要执行哪个方法。

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

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