问题标签 [method-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 投票
2 回答
598 浏览

c++ - 使用“using”声明隐藏基类方法不适用于赋值运算符

以下是派生类中如何使用基方法的简单示例:

如果我在正文中添加以下语句Derived以隐藏这两种方法,...

...然后Base::foo()成功隐藏(变得无法访问)。
Base::operator =仍然可以访问

同样的现象也发生在其他运营商身上。这是一个带有 g++ 的演示

可访问性规则(由于using关键字而应用)不应该以相同的方式应用于方法和运算符吗?
如果不是,那么语句的意义是什么:using operator =;,编译器是否会忽略它?

更新

  1. 我的第一个想法是,编译器可能会生成自己的 default Derived::operator =。这是错误的,因为它使用 Base::operator =.
  2. 如果我使用private继承,则Base::foo()自动隐藏(即使没有using)。但对 没有影响Base::operator =,它仍然有效。

请注意,我不想要“如何隐藏它”的解决方案。但是想从语言的角度理解,为什么运算符不像其他方法那样隐藏。

0 投票
0 回答
89 浏览

c# - 为什么隐藏方法时不需要 new 关键字?

我读了这个答案

new 关键字的唯一作用是删除警告。不使用 new 关键字时收到警告的目的是防止您在真正打算覆盖该方法时意外隐藏该方法。

但是为什么不简单地让它成为一个错误呢?如果它的目的是防止意外隐藏,为什么不一直把它作为一个要求而不仅仅是一个警告,以便一切都清楚呢?

为了清楚起见,我知道关键字的作用。似乎编译器团队的思考过程是'让我们添加一个关键字,因为它可以让事情变得清晰,但让我们让它成为可选的,因为让事情变得清晰并不是那么重要'......

0 投票
5 回答
20263 浏览

c++ - 覆盖虚函数和隐藏非虚函数有什么区别?

给定以下代码片段,函数调用有什么区别?什么是函数隐藏?什么是函数覆盖?它们与函数重载有什么关系?两者有什么区别?我在一个地方找不到对这些的很好的描述,所以我在这里问,以便我可以整合信息。

0 投票
2 回答
143 浏览

c# - 隐式和显式方法隐藏

我有以下两个用例:

这确实使用关键字显式隐藏了该Sum方法。new

我不明白两者之间的区别。第二个代码是否隐式隐藏 Sum 方法?

0 投票
2 回答
113 浏览

java - 实例和方法隐藏:重点是?

有人可以解释一下原因和好处,例如隐藏方法和方法,特别是复制超类成员有什么好处?这难道不是与旨在进一步定义一个类并对其进行改进的继承相违背的吗?

0 投票
2 回答
353 浏览

c# - 隐藏内部虚方法

我有这样的东西;

在已编译的程序集中。我有从这个类派生的类。显然,在该特定程序集之外,我无权覆盖此方法,甚至无法调用它。

是否可以隐藏此方法,因为它甚至对我自己的程序集都不“可见”?

我有没有办法改变这种行为,防止这个方法被调用或重新路由它?

0 投票
1 回答
2434 浏览

c# - 如何从派生自基类的类中隐藏作为基类中接口实现的一部分的方法?

我有以下结构:

请注意,FooBaseandIFoo驻留在命名空间中FooNamespace,但Foo驻留在不同的命名空间中,但可以访问FooNameSpace.

我的问题是,我可以调整代码,以便Register(string id)从派生自的任何类中隐藏该方法FooBase吗?

谢谢

0 投票
2 回答
643 浏览

c# - 为什么标记为隐藏基类中的实现的方法可以调用隐藏方法?

我一直在阅读 c# 规范,遇到了一个我没想到的场景,并希望有人能分享一些启示。

我偶然发现了new在派生类中隐藏基类成员的关键字,随后就何时使用new而不是overrideonvirtual成员进行了一些讨论。

我在我的 IDE 中扔了一个小代码示例,期望看到一个编译错误

但相反发现这是合法的c#。既然派生类已经隐藏了 的存在method(),为什么还允许我调用呢?

干杯

0 投票
4 回答
3189 浏览

java - 在子类中隐藏方法

我有一个带有一些实现方法的抽象超类。

是否可以在继承自该超类的子类中隐藏该超类的方法?我不想在某些子类中从超类中看到某些方法。最后但并非最不重要的一点是,是否可以更改子类中与超类中具有相同名称的方法的参数数量?

假设我们public void test(int a, int b)在超类中有一个方法,但现在我想public void test(int a)在子类中有一个方法调用超类函数,并且超类中的方法不再可见。

0 投票
1 回答
58 浏览

java - 这是方法隐藏的情况吗?

我有以下代码,其中基类 Employee 有一个静态方法 meth1(),我可以从子类 (Pro) 对象调用该方法。这是方法隐藏的情况还是什么?,我不确定,因为我还没有在 Pro 类中实现 meth1() 方法,但仍然能够从 Pro 对象调用 Emplyee 静态方法。

输出:

谢谢

贾延德拉