问题标签 [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.
c# - 反射如何告诉我属性何时使用“new”关键字隐藏继承的成员?
所以如果我有:
如何使用反射来查看 ChildClass 隐藏了 TempProperty 的 Base 实现?
我希望答案在 c# 和 vb.net 之间是不可知的
javascript - 在引用原始函数时覆盖 JavaScript 函数
我有一个函数,a()
我想覆盖它,但还要a()
根据上下文按顺序执行原始函数。例如,有时当我生成一个页面时,我会想像这样覆盖:
有时像这样:
我如何original_a()
从覆盖范围内得到它a()
?甚至可能吗?
请不要以这种方式提出替代方案,我知道很多。我是专门问这种方式的。
inheritance - 继承、父子和覆盖
刚刚在我正在阅读的一本关于 OOP 的书中看到这句话,
只允许孩子增加功能和添加功能。永远不允许孩子删除功能。如果您确实发现子项需要删除功能,这表明子项应该在继承层次结构中出现在父项之前!
但我的问题是,这不是压倒一切吗?
c# - C#中的覆盖和继承
好的,在我学习的过程中,请多多包涵。这是我的问题。
我不知道为什么我不能覆盖父类的方法。这是来自基类的代码(是的,我从一本 OOP 书籍中窃取了 java 代码,并试图用 C# 重写它)。
这是我的其他 2 个继承基类 (MoodyObject) 的对象:
和:
这是我的主要内容:
正如你所看到的,非常基本的东西,但这里是输出:
喜怒无常的对象今天感觉如何?我今天心情不好!
悲伤的对象今天感觉如何?我今天心情不好!哇...嘘
快乐的对象今天感觉如何?我今天心情不好!嘿嘿嘿嘿嘿。按任意键继续 。. .
不像我预期的那样。我试图将基本方法设为虚拟并在尝试覆盖它时调用覆盖,这只会让我出现这个错误“无法覆盖继承的成员'MoodyObject.getMood()',因为它没有被标记为虚拟、抽象或覆盖”。我也尝试过没有虚拟和覆盖,它认为我试图隐藏基本方法。同样,我是 OOP 的新手,希望得到任何指导。
编辑添加:我找到了!MoodyObject.cs 只是解决方案资源管理器中的“解决方案项”,而不是“ConsoleApplication1”项。我将它拖到解决方案资源管理器中它所属的位置,瞧!现在可以了。我在下面将 Luc 的答案标记为答案,因为他为我提供了解决问题所需的帮助......我在这里学到了很多东西。太棒了,你们这些男孩女孩都非常聪明!
language-agnostic - 投票:当传递的对象与 LHS 类型不匹配时,相等的正确行为?
我问了一个关于 findbugs 的相关问题,但让我们问一个更一般的问题。
假设我正在使用一种可以实现多态的面向对象语言。
假设语言支持静态类型检查(例如,Java、C++)
假设该语言不允许参数变化(例如,Java,再次......)
如果我要重写将 Object 作为参数的相等操作,在参数与调用 equals 的 LHS 不同的类型或子类型的情况下,我应该怎么做?
选项 1 - 返回 false,因为对象显然不等于
选项 2 - 抛出一个转换异常,因为如果语言实际上支持方差(这本来是可取的),这将在编译时作为错误被捕获;因此,在运行时检测此错误是有意义的,因为发送另一种类型的情况应该是非法的。
c# - 为什么在重写 Equals 方法时重写 GetHashCode 很重要?
给定以下课程
我已经覆盖了该Equals
方法,因为Foo
它代表了Foo
s 表的一行。哪个是覆盖的首选方法GetHashCode
?
为什么覆盖很重要GetHashCode
?
c# - C# 在不知道它是子类实例的情况下调用重写的子类方法
我有一个带有虚拟方法的基类,以及覆盖该方法的多个子类。
当我遇到其中一个子类时,我想调用被覆盖的方法,但不知道子类。我可以想出丑陋的方法来做到这一点(检查一个值并强制转换它),但似乎应该有一种语言内的方法来做到这一点。我希望列表在同一个列表中包含多个子类,否则显然我可以创建一个列表。
编辑:修复了代码中错误的注释,这导致我得到了非常合适的第一个答案:)
例如:
c++ - 在 C++ 中使用 const 覆盖两个参数的运算符
我正在尝试使用两个 const 参数创建一个重写的运算符函数,但我不知道该怎么做。这是一个简单的例子:
我在这里要做的是将两个参数传递给加法函数,它们都是 const 并返回结果而不更改类中的任何内容:
这可能吗?我将如何去做?
谢谢,
担
c++ - C++ 中的覆盖和重载
是的,我确实理解它们之间的区别。我想知道的是:为什么要覆盖一个方法?这样做有什么好处?在重载的情况下:唯一的优点是您不必为函数考虑不同的名称?
c# - 强制从派生类外部调用基方法
我有两节课:
我有以下代码来实例化 MyDerived:
问题是如何调用基类的 DoMe?如果我使用 myDerived.DoMe(),那么将调用派生方法,从而导致异常。我尝试将 myDerived 强制转换为 MyBase,但它仍然是被调用的方法的派生版本。
编辑:如以下评论中所述,我无法更改 eitehr MyDerived 或 MyBase 因为它们不是我的代码。