问题标签 [overriding]

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 投票
4 回答
6141 浏览

c# - 反射如何告诉我属性何时使用“new”关键字隐藏继承的成员?

所以如果我有:

如何使用反射来查看 ChildClass 隐藏了 TempProperty 的 Base 实现?

我希望答案在 c# 和 vb.net 之间是不可知的

0 投票
12 回答
206450 浏览

javascript - 在引用原始函数时覆盖 JavaScript 函数

我有一个函数,a()我想覆盖它,但还要a()根据上下文按顺序执行原始函数。例如,有时当我生成一个页面时,我会想像这样覆盖:

有时像这样:

我如何original_a()从覆盖范围内得到它a()?甚至可能吗?

请不要以这种方式提出替代方案,我知道很多。我是专门问这种方式的。

0 投票
6 回答
1288 浏览

inheritance - 继承、父子和覆盖

刚刚在我正在阅读的一本关于 OOP 的书中看到这句话,

只允许孩子增加功能和添加功能。永远不允许孩子删除功能。如果您确实发现子项需要删除功能,这表明子项应该在继承层次结构中出现在父项之前!

但我的问题是,这不是压倒一切吗?

0 投票
8 回答
49303 浏览

c# - C#中的覆盖和继承

好的,在我学习的过程中,请多多包涵。这是我的问题。

我不知道为什么我不能覆盖父类的方法。这是来自基类的代码(是的,我从一本 OOP 书籍中窃取了 java 代码,并试图用 C# 重写它)。

这是我的其他 2 个继承基类 (MoodyObject) 的对象:

和:

这是我的主要内容:

正如你所看到的,非常基本的东西,但这里是输出:

喜怒无常的对象今天感觉如何?我今天心情不好!

悲伤的对象今天感觉如何?我今天心情不好!哇...嘘

快乐的对象今天感觉如何?我今天心情不好!嘿嘿嘿嘿嘿。按任意键继续 。. .

不像我预期的那样。我试图将基本方法设为虚拟并在尝试覆盖它时调用覆盖,这只会让我出现这个错误“无法覆盖继承的成员'MoodyObject.getMood()',因为它没有被标记为虚拟、抽象或覆盖”。我也尝试过没有虚拟和覆盖,它认为我试图隐藏基本方法。同样,我是 OOP 的新手,希望得到任何指导。

编辑添加:我找到了!MoodyObject.cs 只是解决方案资源管理器中的“解决方案项”,而不是“ConsoleApplication1”项。我将它拖到解决方案资源管理器中它所属的位置,瞧!现在可以了。我在下面将 Luc 的答案标记为答案,因为他为我提供了解决问题所需的帮助......我在这里学到了很多东西。太棒了,你们这些男孩女孩都非常聪明!

0 投票
5 回答
124 浏览

language-agnostic - 投票:当传递的对象与 LHS 类型不匹配时,相等的正确行为?

我问了一个关于 findbugs 的相关问题,但让我们问一个更一般的问题。

假设我正在使用一种可以实现多态的面向对象语言。

假设语言支持静态类型检查(例如,Java、C++)

假设该语言不允许参数变化(例如,Java,再次......)

如果我要重写将 Object 作为参数的相等操作,在参数与调用 equals 的 LHS 不同的类型或子类型的情况下,我应该怎么做?

选项 1 - 返回 false,因为对象显然不等于

选项 2 - 抛出一个转换异常,因为如果语言实际上支持方差(这本来是可取的),这将在编译时作为错误被捕获;因此,在运行时检测此错误是有意义的,因为发送另一种类型的情况应该是非法的。

0 投票
15 回答
423817 浏览

c# - 为什么在重写 Equals 方法时重写 GetHashCode 很重要?

给定以下课程

我已经覆盖了该Equals方法,因为Foo它代表了Foos 表的一行。哪个是覆盖的首选方法GetHashCode

为什么覆盖很重要GetHashCode

0 投票
5 回答
17384 浏览

c# - C# 在不知道它是子类实例的情况下调用重写的子类方法

我有一个带有虚拟方法的基类,以及覆盖该方法的多个子类。

当我遇到其中一个子类时,我想调用被覆盖的方法,但不知道子类。我可以想出丑陋的方法来做到这一点(检查一个值并强制转换它),但似乎应该有一种语言内的方法来做到这一点。我希望列表在同一个列表中包含多个子类,否则显然我可以创建一个列表。

编辑:修复了代码中错误的注释,这导致我得到了非常合适的第一个答案:)

例如:

0 投票
4 回答
2607 浏览

c++ - 在 C++ 中使用 const 覆盖两个参数的运算符

我正在尝试使用两个 const 参数创建一个重写的运算符函数,但我不知道该怎么做。这是一个简单的例子:

我在这里要做的是将两个参数传递给加法函数,它们都是 const 并返回结果而不更改类中的任何内容:

这可能吗?我将如何去做?

谢谢,

0 投票
7 回答
71744 浏览

c++ - C++ 中的覆盖和重载

是的,我确实理解它们之间的区别。我想知道的是:为什么要覆盖一个方法?这样做有什么好处?在重载的情况下:唯一的优点是您不必为函数考虑不同的名称?

0 投票
7 回答
5896 浏览

c# - 强制从派生类外部调用基方法

我有两节课:

我有以下代码来实例化 MyDerived:

问题是如何调用基类的 DoMe?如果我使用 myDerived.DoMe(),那么将调用派生方法,从而导致异常。我尝试将 myDerived 强制转换为 MyBase,但它仍然是被调用的方法的派生版本。

编辑:如以下评论中所述,我无法更改 eitehr MyDerived 或 MyBase 因为它们不是我的代码。