问题标签 [member-hiding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
25 浏览

java - 不同方式访问接口成员变量,结果不同

在玩 Java 8 的 lambda 时。我注意到尝试以三种方式访问​​接口成员变量时的一个有趣行为。

运行此代码会得到以下结果:

似乎当通过interact方法的实现访问变量时,访问的变量是实现类中的变量。但是,当直接访问公共变量时,会返回接口成员变量。转换后直接访问它似乎再次返回实现变量。

这看起来很混乱,如果不是不一致的话,因为即使在同一个对象上操作时,访问interact方法和公共变量也会返回不同的结果。kind

0 投票
0 回答
315 浏览

c# - C#中“public new void Method()”和“new public void Method()”的区别

我在这里偶然发现了这篇文章,解释了如何隐藏继承的成员或覆盖它们的值。(我正在研究在使用继承时更改访问修饰符的可能性,是的,这是不可能的,为什么它不可能是有道理的——这不是问题的一部分,不要判断)

这是我知道的 C# 中一个相当古老的功能。

我的问题是,我一直知道实现这种行为的语法是

public new void SomeMethod()

相反,本文使用以下语法:

同样,假设在这种情况下,这里应用了一些继承,我实际上想改变“SomeMethod”的行为

我对 SO 社区的问题是上述 2 个陈述之间有什么区别?我试图调查它,但我找不到答案。

0 投票
0 回答
142 浏览

mfc - 函数“隐藏”和 OnSize

我真的不明白这个。取OnSize函数:

所以,它不是虚拟的。因此,我们在派生类中使用 ClassWizard 创建自己的方法。例如:

你通过最新的代码分析运行它,它会抛出一个关于隐藏非虚拟函数的警告。但是我们调用的是类函数。这是标准的 MFC 样板代码(这是正确的术语吗?)。

所以它没有隐藏。当然,这个警告应该只在未调用基类实现的情况下标记?

0 投票
2 回答
141 浏览

java - 具有私有静态字段的超类和子类调用改变字段的方法,为什么字段不改变?

为什么程序打印true而不是false,我不明白为什么在被调用goo后没有改变。没有隐藏,因为它是一个私有字段。创建对象之前的静态字段是,那么当它发生时它不应该在堆中改变吗?foo()gootruefoogoo

0 投票
4 回答
80 浏览

c# - 方法擦除:为什么说派生类的方法隐藏了基类,反之呢?

编译器警告说:

Cat.Foo 隐藏了继承的成员

然而,输出实际上来自基类。所以对我来说,似乎反过来,我调用的那个被基类中的那个隐藏了。

0 投票
1 回答
92 浏览

c# - 是否可以在属性定义中同时使用“新”和“覆盖”?

我试图解决我的应用程序中的继承问题。基本上是这样的:

我想隐藏属性并将其替换Value为. 但同时我也希望能够覆盖属性以提供更有效的定义,以防我将它分配给 type 的变量。BaseAAValueValueBaseA

是否有可能以某种方式覆盖属性并同时隐藏它(即取消注释 A 和 B 行)?在我的实际应用程序中,基类的定义并不那么简单,我希望提供更有效的定义并隐藏该值。

解决方案可能是不从基础中隐藏成员,而是使用另一个名称。例如ValueNotNull并将覆盖的方法标记为已过时。但这并不是那么简单,因为我无法从接口IAbcBaseIAbc. 我不喜欢这个解决方案,因为那时的实现IAbc必须是显式的,所以我可以覆盖成员BaseA,然后我不能使用我想要的名称ValueA因为它基本上是不可为空的等价于Valueon BaseA

我希望我能很好地描述我的问题。如果需要任何细节,我会编辑

/// 编辑:如果允许 A 行和 B 行上的定义,我被要求提供用例示例。在我的实际应用程序中,我有以下定义(简化):

根节点基本上是国际象棋分析的开始位置,不一定是标准的开始位置。NodesCount 是用于分析此移动的节点数。这是我没有根位置的东西,因为我从来没有从任何分析中得到起始位置,所以没有什么可以返回(有更多这样的属性,我简化了很多)。

Definition分析完成后,我主要使用代码中除一处以外的变量,我得到StandardDefinition. 因此,大多数无效的定义NodesCount和其他类似属性被使用,而不是使用定义 from StandardDefinition。这就是我希望能够覆盖的原因,因为大多数实例显然是StandardDefinition. 只有几个RootDefinitions。大多数对 null 的强制转换和测试是绝对没有必要的。在我分析了位置之后,我得到StandardDefinition了,现在我希望能够隐藏可以为空的旧定义并提供只返回用于分析该位置的不可为数的节点数的定义。再次避免所有不必要的铸造等。

0 投票
2 回答
143 浏览

java - 从隐藏它的类的子类访问隐藏字段

如何访问protected基类的基类中被基类中的字段隐藏的字段?

一个例子:

Foo类的x字段被 的同名字段遮蔽,Bar但可以通过反射访问:

有没有一种方法可以做到这一点而无需反思,也无需更改超类?

0 投票
1 回答
99 浏览

c++ - 从基类调用派生类的隐藏(非虚拟)方法

有没有办法(模板,宏任何其他)在编译时替换从通用方法调用hidden_​​in_derived,以便 Derived 的实例调用它自己的hidden_​​in_derived而不在 Base中使hidden_​​in_derived虚拟)?

0 投票
2 回答
68 浏览

c# - 在派生接口中隐藏接口成员

我刚刚反编译了一些 3rd-party 界面,并对以下内容摸不着头脑:

正如你所看到的,我有两个接口,通过隐藏它的-property来IBar扩展。但是我看不到-keyword 在这里做什么。我阅读了 Eric Lippert 的回答,该回答与返回类型仅不同的成员有关。但是在我的情况下,一切都只是一个字符串。IFooNamenew

当然,我们可以显式地实现任何一个接口。但new无论如何,这都是可能的。

0 投票
1 回答
560 浏览

c# - AutoMapper - 映射子属性隐藏基类属性

我在尝试使用AutoMapper和 C# 将类映射到派生类时遇到了一个非常愚蠢的问题。

这些是我的课:

特别是,我想要实现的是正确设置了映射类的所有属性。问题是Child映射类的属性未设置并保持为null

这是我正在使用的映射配置:

任何帮助表示赞赏。

谢谢

编辑

实际上说Child属性保持为null是不正确的。调试代码我可以看到有 2 个同名的子属性,因为new用于隐藏父属性的修饰符。

无论如何,我需要的属性仍然是null