问题标签 [inheritance]

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 投票
8 回答
497 浏览

java - Java:新手式继承问题

假设我有一个基类 B 和一个派生类 D。我希望在我的基类中有一个方法 foo(),它返回一个实例类型的新对象。因此,例如,如果我调用 B.foo() 它返回一个 B 类型的对象,而如果我调用 D.foo() 它返回一个 D 类型的对象;同时,实现仅驻留在基类 B 中。

这可能吗?

0 投票
4 回答
4121 浏览

java - Validate 接口的继承设计

我从来没有这么擅长设计,因为有很多不同的可能性,它们都有优点和缺点,我永远不知道该选择哪一个。无论如何,这是我的问题,我需要许多不同的松散相关的类来进行验证。但是,其中一些类需要额外的信息来进行验证。我想要一个validate可用于验证 Object 的方法,并且我想确定 Object 是否可以通过接口验证,比如Validatable. 以下是我可以拥有的两个基本解决方案。

这是第一个解决方案,我有一个通用的全局接口,可以验证的东西实现并且我可以validate()用来验证,但 Object1 不支持这个,所以它有点失效,但 Object2 确实支持它,许多其他类也可以。

或者,我可以拥有以下内容,这将使我没有顶级界面。

我认为我遇到的主要问题是我有点坚持拥有顶级接口的想法,因此我至少可以说 X 或 Y 对象是可验证的。

0 投票
3 回答
18993 浏览

javascript - 如何使用 JSON 创建从对象类型继承的对象?

我知道如何使用 JSON 来创建对象,但似乎没有办法使用 JSON 来创建特定对象类型的对象。

这是一个对象的示例并创建它的一个实例:

现在,我想使用 JSON 创建一个新的 Person 对象,以便 GetFirstName 函数对其进行处理。

这是我想做的事情(但这段代码不起作用):

反正有没有使用 JSON 来创建一个特定类型的对象?

更新:我的 Person 对象示例只是为了简化问题。事实上,我无法修改需要创建实例的实际对象的构造函数。这些对象是第三方库的一部分。

更新:使用下面的一些建议,我能够找到一种方法来创建一个继承自原始对象的对象,并在其构造函数中接受 JSON。这很整洁!

0 投票
8 回答
59637 浏览

javascript - Javascript 是一种基于原型的语言是什么意思?

据说 Javascript 的主要优点之一是它是一种基于原型的语言。

但是 Javascript 基于原型意味着什么,为什么这是一个优势?

0 投票
2 回答
7831 浏览

c# - 从 ASP.NET Web 控件继承:“元素不是已知元素”

我正在尝试创建一个继承自 ASP.Net 的内置日历用户控件的自定义日历控件。

我的控件的代码隐藏文件如下所示:

并编译得很好。

但是,当我尝试将自定义控件放在 aspx 页面上时:

我收到警告“元素 WeeklyEventsCalendar 不是已知元素。如果网站中存在编译错误,或者 web.config 文件丢失,则可能会发生这种情况。尝试

当我输入错误的文件位置时,我没有像过去那样收到任何类型的“找不到文件”错误。

当我尝试在浏览器中加载 aspx 页面时,出现错误 CS0115: 'ASP.usercontrols_weeklyeventscalendar_ascx.FrameworkInitialize()': no proper method found to override

这更令人困惑,因为我的代码中没有任何地方尝试定义这样的函数。

这应该很简单。我哪里错了?

0 投票
9 回答
65116 浏览

.net - 您如何有效地对数据库中的继承进行建模?

在数据库中建模继承的最佳实践是什么?

有哪些权衡(例如可查询性)?

(我对 SQL Server 和 .NET 最感兴趣,但我也想了解其他平台如何解决这个问题。)

0 投票
2 回答
16863 浏览

delphi - 如何在 Delphi 中使用或解决可视化表单继承问题?

我一直在从事 Delphi 7 中的一个项目,我想让表单从其他表单继承组件。我能够得到这个工作,但遇到了以下问题(我将发布解决方案,希望将来能帮助其他人):

  1. 在表单的 .pas 文件中,我会将表单更改为从其他表单继承,但它不会从祖先表单中获取组件。
  2. 对于某些后代表单,我在设计时打开表单时会收到以下错误消息:“创建表单时出错:找不到'TAncestorForm'的祖先。” 我必须先手动打开祖先表单,然后才能打开后代表单。
0 投票
2 回答
2221 浏览

design-patterns - 多态与继承(示例问题案例)

我仍在尝试围绕设计模式进行思考,并且第二次遇到同样的问题,似乎急需一种模式解决方案。

我有一个具有多种帐户类型的帐户系统。我们有餐厅、酒店、service_provider 和消费者帐户类型。相信未来还会有更多的企业账户类型,当然还有全局管理员账户。

所以我想知道的是如何实现账户类型的切换。例如。每个帐户将有一个或多个配置文件,但配置文件将根据帐户类型而有所不同。我应该在这里使用什么样的类关系来处理多种类型的帐户 - 多态性或继承?

似乎应该有一个其他配置文件应该扩展的抽象基本配置文件类,但我不确定如何实现它(例如配置文件类型和帐户类型之间的连接表?)。

这也感觉像是一个实现工厂模式的机会,我只是不确定如何去做。

请问有什么想法吗?

编辑以提供一些建议的示例:

配置文件因帐户类型而异,例如,餐厅类型的帐户将有菜单、酒单等,酒店类型的帐户将具有房间类型、设施,消费者类型的帐户将具有个人品味, 本国等

问题是哪种设计模式最能实现这些关系。

希望那更清楚,谢谢!

0 投票
34 回答
10761 浏览

c# - C# 应该有多重继承吗?

我遇到了许多反对在 C# 中包含多重继承的论点,其中一些包括(撇开哲学论点):

  • 多重继承太复杂而且经常模棱两可
  • 这是不必要的,因为接口提供了类似的东西
  • 在接口不合适的情况下,组合是一个很好的替代品

我来自 C++ 背景,怀念多重继承的力量和优雅。尽管它并不适合所有软件设计,但在某些情况下,很难否认它对接口、组合和类似的 OO 技术的实用性。

排除多重继承是否意味着开发人员不够聪明,无法明智地使用它们,并且无法在出现复杂性时解决它们?

我个人会欢迎在 C#(可能是 C##)中引入多重继承。


附录:我很想知道来自单一(或程序背景)与多重继承背景的回复。我经常发现没有多重继承经验的开发人员通常会默认使用多重继承是不必要的论点,因为他们没有任何范式经验。

0 投票
5 回答
4164 浏览

c# - C# 中的继承树和受保护的构造函数

给定以下继承树,以有效的方式实现它的最佳方法是什么?

这失败了:'Bar.Bar()' is inaccessible due to its protection level

我不希望构造函数是公开的,只有继承自的类Foo才能创建Bars。Bar是一个专门Foo的,任何类型的Foo都应该能够创建一个。公共内部在这里是一个“选项”,因为大多数预定义的扩展都Foo将在 DLL 内部,但我认为这是一个草率的答案,因为后来出现的任何人想要创建自己的Fooor类型Baz(即可能发生)将被默认CreateBar()实现卡住,这可能会也可能不会满足他们的需求。

也许有一种方法可以重构它以使其正常工作?我正在努力设计这个,所以它会起作用。

编辑(更多信息):

稍微具体一点:Foo 正在实现 IEnumerable,长话短说,Bar 提供了相同的接口,但只针对该可枚举对象的有限子集。所有 Foo 都应该能够创建自己的子集(即 Bar)并返回它。但我不想让每个想要实现 Foo 的人都担心这个,因为 Bar 会做代理并担心限制范围等。