gpt4 book ai didi

c# - 在 C# 或 Java 中子类化时是否可以覆盖私有(private)成员?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:16 29 4
gpt4 key购买 nike

我正在学习 C# 和 Java,并且有一个关于继承的问题。

是否可以覆盖父类(super class)(基类)中的私有(private)成员?在我看来,这是不正确的,因为访问修饰符会阻止成员被访问。

最佳答案

这不是一个愚蠢的问题,但它给出了隐藏变量的另一个概念。

Java 中的字段只是隐藏的,实际上并没有被覆盖(这并不意味着我们在尝试此操作时会遇到编译时错误,而是它们并没有真正意义上的被覆盖)。覆盖意味着应该根据对象的运行时类型而不是声明的类型来调用成员。但是 Java 中字段的绑定(bind)始终是静态的,因此它仅基于对象引用的声明类型。在文章中阅读有关静态绑定(bind)的更多信息 - 动态绑定(bind)与静态绑定(bind)>>

在方法的情况下,只有那些继承的方法被覆盖,因此静态方法也不会被覆盖,而只是隐藏,并且它们仅遵循静态绑定(bind)。私有(private)成员(方法或字段)既不隐藏也不覆盖。它们也遵循静态绑定(bind),并且除了拥有它们的类之外,不能从任何其他类(包括子类)直接访问它们。请记住,Hidden 在这里并不意味着我们无法访问子类中的成员。因此,不要将不可访问(对于私有(private)成员 - 字段或方法)和隐藏相混淆。

关于c# - 在 C# 或 Java 中子类化时是否可以覆盖私有(private)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8210846/

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