问题标签 [subclassing]

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 投票
5 回答
301 浏览

c# - 决定需要哪个子类的最佳方法

我正在为当前项目开发一个大型结帐应用程序。此结帐有很多情况,具体取决于用户的管理员级别、他们如何结帐以及他们要签出的项目类型,因此该过程通​​过一组上下文类从 .aspx 页面中抽象出来。

这些类都是单个类 CheckoutContext 的子类,并且要使用的类的类型通过枚举来注明。

有没有类似于 typedef 的东西我可以用来选择要使用的子类,或者我应该只是有一个返回相关类的方法,如下所示:

p>

0 投票
1 回答
2364 浏览

python - Python中的子类化

是否可以动态子类化?我知道有____bases____,但我不想影响该类的所有实例。我希望对象 cf 变形为 DrvCrystalfontz 类的 mixin。进一步进入层次结构的是 gobject 的一个子类,它需要在此级别可用以连接信号,而下面的解决方案是不够的。

0 投票
3 回答
756 浏览

c# - 实用程序类与子类化 .net 控件

我想重用我编写的一些代码来向 datagridview 添加一些功能。我希望公开默认的 datagridview 属性和事件,所以我不想创建新的自定义组件。所以我尝试编写一个子类,效果很好。但我也想到我可以编写一个独立的实用程序类,它在构造函数中采用一个 datagridview 并以相同的方式设置它。例如

所以在我的应用程序启动的某个地方我会打电话

等等。这种方法有什么缺点吗?似乎大部分代码都将是相同的,区别在于您如何实例化扩展网格(将子类控件拖放到表单与拖动普通 datagridview 并调用上面的代码)

0 投票
10 回答
2927 浏览

oop - 哎呀。选择对象

我是一个以 OOP 术语思考的相对新手,还没有找到我的“直觉”来正确地做这件事。作为一个练习,我试图找出在不同类型的对象之间创建界限的位置,以我桌子上的饮料为例。

假设我创建了一个 object Drink,它具有像 and 这样的属性和像volumeandtemperature这样的方法pour()drink()我正在努力查看特定饮料“类型”的来源。

假设我有一种饮料类型TeaCoffee或者Juice,我的第一直觉是子类Drink,因为它们具有共同的属性和方法。

然后问题就变成了两者Tea和具有和之Coffee类的属性,但没有,而所有三个都具有(分别为伯爵茶、去咖啡因和橙色)。sugarsmilkJuicevariant

同样,Tea并且Coffee有一个方法,而这对一个对象addSugar()没有意义。Juice

那么这是否意味着超类应该具有这些属性和方法,即使所有子类都不需要它们,或者我是否在子类上定义它们,特别是对于像这样的属性variant,每个子类都有它自己的有效值列表?

但后来我得到了两种addSugar()方法,分别是子类TeaCoffee子类。

或者考虑到我最终将所有属性和方法放在超类上,因为大多数属性和方法至少在几种饮料类型之间共享,我想知道子类化的意义何在?

我担心我只是想抽象太多,但不想让自己陷入困境,如果我想添加一种新的类型,比如Water- with variantstill or sparkling - 在路上。

0 投票
3 回答
1035 浏览

asp.net - ASP.Net Treeview:奇怪的回发行为

我有一个 ASP.NET 树视图,其中填充了自定义树节点(从 TreeNode 子类化的 ExtensionRangeTreeNode)。在回发时,treeview 填充了 TreeNodes,而不是我的自定义 treenode 类。

这是怎么回事?

谢谢,英国石油公司

0 投票
1 回答
1772 浏览

ruby-on-rails - 子类化模型时的数据库和关系设计

我有一个模型“Task”,它将 HABTM 许多“TaskTargets”。

然而,当涉及到 TaskTargets 时,我正在编写抽象的基本 TaskTarget 类(与 Rails 中的一样多)。TaskTarget 将由任何可以成为任务目标的任何不同概念化的子类。比如说,软件子系统、客户站点、浴室等……

这里的类设计相当简单,但我遇到的问题是我将如何将它们联系在一起,以及我将如何让 Rails 操纵这些关系。

我的第一个想法是我将拥有一个包含基本公共字段(名称、描述...)的 TaskTarget 表。然后,它还将与特定于实现类包装的数据类型的表具有多态关系。这意味着实现 TaskTarget 的类的一个实例的数据将在两个表中找到。

第二种方法是在 Task 和 TaskTarget 的子类之间创建多态 HABTM 关系,我认为我可以将表名 TaskTarget 用于连接表。

我怀疑选项#2是最强大的,但也许我遗漏了一些东西。感谢您的帮助,当然,我真的只是要求确保我把它做好,一次!

0 投票
4 回答
2226 浏览

java - Instanceof 和类型转换技术

我有一个关于技术和实现的问题,而不是要解决的实际问题。最近我创建了一个抽象类,我们称之为A,它定义了它的子类的共同行为。

我用它来构造几个子类 B、C 和 D,然后将它们传递给超类-子类结构之外的其他方法,该结构采用类型 A(因此能够处理所有 B、C 和 D)。

在 Java 中,我使用 instanceof 来检索真实类型,但最终我不得不对真实类型进行大量转换,而且看起来很乱。有人对如何使代码更干净有任何建议吗?

我尝试的一种方法是从超类的参数中重构子类类型的实例,这样我就可以使用它的实际类型来处理对象,从而避免类型转换。由于这些子类中的每一个都是单例(是的,它们保持状态),所以我觉得这样做没问题。这似乎是一件糟糕的事情吗?

感谢任何回答的人,非常感谢!

编辑:我用斜体添加了进一步的说明。谢谢。

0 投票
1 回答
3224 浏览

iphone - UIImageView 子类不显示

我正在使用 UIImageView 的自定义子类,但我无法弄清楚为什么它没有被显示。

从将显示我的子类的视图的视图控制器中:

在我进行子类化之前,我在视图控制器中没有遇到以下问题:

我使用断点检查了传递给我的班级的框架和图像,它们似乎都是有效的和理想的。

关于我做错了什么的任何建议,我将不胜感激。

0 投票
1 回答
81 浏览

wpf - 需要就采取的方法提出建议

我们有一个包含两个不同项目的解决方案,一个要求使用 .Net 2.0 框架完成。其他使用 .Net 3.5,我们遵循 MVVM,尽管我怀疑这不是关于 MVVM 而是好的模式。

.Net 2.0 有几个不同的对象(比如说 Fruit 类型),它们可能需要不同的 WPF 用户界面来编辑类属性值。目前,我只是在做第一个。.net 3.5 项目是用户实际运行和编辑的项目。

我的第一个想法是,当我们创建 Fruit 子类时(Apple,在构造函数中有一个 Func 参数,该参数返回创建编辑对话框的调用。其他尚未实现编辑对话框的水果只会有一个 Func 参数返回“不支持编辑”编辑器对话框。但 2.0 不支持功能。

我的下一个想法是,向 .net 2.0 类添加属性,这些类引用 .Net 3.5 类,然后 .net 3.5 项目可以使用反射创建实例。但这似乎很混乱。

我可以在 .net 3.5 项目中创建一个 CreateFruitEditor 类,它只检查 Fruit 类型并创建适当的编辑器窗口,但这最终会导致一个大的多行 if 语句检查类型(假设水果完全不同在编辑中。)

所以...... .net 2.0 项目类必须以某种方式通知我的 .net 3.5 项目哪些 .net 3.5 类用于编辑 .net 2.0 类。

0 投票
1 回答
804 浏览

django - 在 Django 中做对 - 子类化而不是黑客攻击

我正在使用 threadedcomments 模块,需要进行两项更改: - ThreadedComment 模型上的附加字段 - 表单上的不同字段

我知道答案是子类,但我不确定如何去做——代码去哪里了?