问题标签 [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.
java - 如何使用单独的 jar 覆盖类?
客户需要预览我们产品的新功能。他们要求将该功能以 jar 文件(如补丁)的形式发送给他们。将新类包含在所述 jar 文件中没有问题。但是,修改了现有类,这是集成新功能所必需的。他们只想添加这个新的 jar 文件,而不必更新我们产品的核心类。所以,问题是:是否可以使用单独的 jar 覆盖已经存在的类?如果是这样,怎么做?
提前致谢。
c++ - 用纯虚方法覆盖(常规)虚方法有什么影响?
假设我们有
这真的是压倒一切的吗?我认为这实际上是重载。从设计角度来看,制作这样的东西有什么意义?
我们得到了一个基类 A。然后我们得到了一个派生自具体类 A 的抽象派生类 B,然后是通过 C 实现的 B。
我们在这里做什么,这有意义吗?
c++ - 在 C++ 中用私有函数覆盖公共虚函数
是否有任何理由使重写的 C++ 虚函数的权限不同于基类?这样做有什么危险吗?
例如:
C++ 常见问题解答说这是一个坏主意,但没有说明原因。
我在一些代码中看到了这个习语,我相信作者试图使这个类成为最终的,基于不可能覆盖私有成员函数的假设。然而,这篇文章展示了一个重写私有函数的例子。当然,C++ 常见问题的另一部分建议不要这样做。
我的具体问题:
在派生类和基类中对虚拟方法使用不同的权限是否有任何技术问题?
有任何正当理由这样做吗?
c++ - 安全地覆盖 C++ 虚函数
我有一个带有虚函数的基类,我想在派生类中重写该函数。有没有办法让编译器检查我在派生类中声明的函数是否实际上覆盖了基类中的函数?我想添加一些宏或其他东西,以确保我不会意外声明一个新函数,而不是覆盖旧函数。
举个例子:
这里parent::handle_event()
被调用而不是child::handle_event()
,因为孩子的方法错过了const
声明,因此声明了一个新方法。这也可能是函数名称的拼写错误或参数类型的一些细微差别。如果基类的接口发生更改并且某些派生类未更新以反映更改,也很容易发生这种情况。
有什么方法可以避免这个问题,我可以告诉编译器或其他工具帮我检查吗?任何有用的编译器标志(最好是 g++)?你如何避免这些问题?
java - 类型擦除、覆盖和泛型
有人可以向我解释为什么
不覆盖
并给我以下错误:
?
编辑: “ java -version
”表示 Java(TM) 2 运行时环境,标准版(内部版本 1.5.0_16-b06-284)。至于代码片段,它已经在上面了,差不多了;上面扩展了下面的。
c++ - 从构造函数调用虚函数
也许我错了,但这似乎是一个非常基本的问题。突然我的继承链停止工作。编写一个小的基本测试应用程序证明是我错了(所以我不能责怪编译器)。
我有一个基类,在虚函数中具有默认行为。子类从中派生并更改行为。
这打印:
创建 Child 实例时,为什么要调用 Base::print()?我认为通过使用 virtual 关键字,可以将函数替换为派生类。
我在什么时候让自己感到困惑?
c# - 基类能否确定派生类是否覆盖了虚拟成员?
这是我的课程的简化版本:
我试图从派生类中隐藏锁定代码。但我只想在派生类覆盖 UpdateSharedData 时获得锁;如果不是,我不希望该方法在更新非共享数据之前阻塞并等待所有其他更新共享数据的运行实例。
因此,Method 要做的(看似)显而易见的事情是检查并查看 UpdateSharedData 的当前实例的实现是否覆盖了基类的实现。我很确定如果不使用反射,这是不可能的,而且这样做可能是不可取的。
我已经想到了一些解决方法,但它们都很尴尬:
- 添加派生类的构造函数设置的受保护的布尔属性,并检查该属性以查看是否需要锁定。这在从派生类中隐藏锁定代码方面做得非常糟糕。
- 使 UpdateSharedData 方法成为委托属性,让任何派生类在其构造函数中将该属性设置为私有方法,并且仅在委托不为空时获取锁。这更好,但它仍然有点糟糕。
c# - 覆盖控制台关闭
我知道 GUI 有
但是我怎样才能在控制台应用程序中做同样的事情呢?C#/.NET3.5
.net - 是否可以通过覆盖将访问器添加到 .NET 中的属性?
有可能做这样的事情吗?
也就是说,基类提供了一个只有 GET 访问器的虚拟属性,但子类覆盖了 GET 并还提供了一个 SET。
当前示例无法编译,但也许我在这里遗漏了一些东西。
补充:为了澄清,不,我不想用 new 重新定义。我想添加一个新的访问器。我知道它不在基类中,所以它不能被覆盖。好的,让我试着解释一下没有语法糖的情况: