问题标签 [subclass]

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 回答
1745 浏览

c# - C#:子类列表?

我有一个EqualCondition实现我自己的接口的类ICondition,它只有一个方法:SatisfiedBy(Something).

所以ICondition实现起来非常简单。现在我正在尝试创建一个CombinationCondition也实现它的。这个想法是CombinationCondition包含一个IConditions 列表,它将决定是否SatisfiedBy成功。

我的第一个想法是CombinationCondition实现IList<Something>,但我很快意识到我只是在复制List<Something>. 那么为什么不只是子类呢?

SatisfiedBy这个想法听起来不错,直到我再次开始考虑如果我只是子类化如何实现List<Something>。我需要去做:

但是如何访问内部列表?

0 投票
5 回答
7008 浏览

iphone - 未调用 UITextField 上的 drawTextInRect

我正在尝试实现这个 SO question的答案。问题是:-[drawTextInRect]显然没有被调用,并且设置阴影-[drawRect]不会使 UITextField 的文本被遮蔽。

另一个奇怪的事情是,即使我的子类实现-[drawTextInRect]-[drawRect]完全是空的(甚至没有调用 super),文本字段的文本也会被绘制。

0 投票
2 回答
2029 浏览

objective-c - 在 NSButton 子类中绘制文本

如何在我的 NSButton 子类中添加按钮标题中的文本?

0 投票
6 回答
9547 浏览

iphone - 为什么 Apple 不允许 UINavigationController 的子类化?我有什么替代子类化的方法?

我目前正在构建一个选项卡式 iPhone 应用程序,其中每个选项卡的视图控制器都是 的实例UINavigationController,并且每个UINavigationController实例的每个子控制器都是UITableViewController. 理想情况下,我想进行子类UINavigationController化,以便每个选项卡的控制器都是 UINavigationController 的子类,它(UINavigationController显然除了具有所有标准功能之外)充当与其子控制器关联的每个表视图的数据源和委托. 尝试这样做似乎破坏UINavigationController了子类中的基本功能。

正如Apple在他们的iPhone文档中所说的那样,一个人不应该子类化UINavigationController,而且事情似乎会中断,我想知道我应该如何在UINavigationController's没有子类化的情况下扩展功能,一般来说,当一个人应该如何解决子类化限制时做可可开发。

谢谢!

0 投票
1 回答
1343 浏览

nhibernate - NHibernate 子类和组合键

我有一个类 StoreHours ,它有一个复合键并且一直运行良好。一个新的要求出现了,要求返回另一种类型的时间。我想“很简单,我将抽象基类,有两个具体的实现,并将我在应用程序中的引用更改为新类之一”。但是,这样做后,我的单元测试失败了

X.Test.StoreTest.HoursTest:NHibernate.InstantiationException:无法实例化抽象类或接口:X.Model.StoreHours

我的映射文件看起来像

我在这里找到了有类似问题的人并开始了他们的解决方案,但实际上最终遇到的麻烦比我开始时还要多。

我可以完美地将记录保存到数据库中,但是在加载时,NHibernate 正在尝试实例化抽象的“StoreHours”,即使我只有一个强类型设置“OfficeHours”

这似乎是一个非常微不足道的要求,所以我认为我必须做一些简单的错误。所有提示表示赞赏。

0 投票
1 回答
1502 浏览

objective-c - 带有 NSButton 子类的 NSShadow

这是我的代码:

问题是 NSShadow 在文本后面而不是 NSBezierPath,'aPath',我将如何在 NSBezierPath 中添加阴影?

0 投票
4 回答
1377 浏览

objective-c - Objective C - 初始化子类对象的继承变量

我有一个班级 MyClass。我在这里夸大了,但假设 MyClass 有 1000 个实例变量。然后,我创建了一个名为 MySubClass 的子类,其中包含 MyClass 拥有的所有实例变量,再加上一个。

问题:给定一个MyClass类的对象MyObj,有没有一种简单的方法可以创建一个MySubClass类的对应对象MyDerivedObj,使得MyDerivedObj的实例变量与MyObj的实例变量相同?“相同”,我的意思是非常相同,如果 MyObj 的实例变量是指向对象的指针,则 MyDerivedObj 的相应实例变量应该指向相同的内存。

0 投票
5 回答
21063 浏览

python - 子类化 dict:应该调用 dict.__init__() 吗?

这是一个双重问题,一个理论部分,一个实践部分:

子类化dict时:

应该dict.__init__(self)被称为“安全”措施(例如,如果有一些重要的实现细节很重要)?如果不调用,代码是否存在与 Python 的未来版本中断dict.__init__()的风险我在这里寻找做一件事或另一件事的根本原因(实际上,打电话dict.__init__()是安全的)。

我的猜测是,当ImageDB.__init__(self, directory)被调用时, self 已经是一个新的空 dict 对象,因此不需要调用dict.__init__(我确实希望 dict 一开始是空的)。它是否正确?

编辑

上述基本问题背后更实际的问题如下。我正在考虑将 dict 子类化,因为我会经常使用 db[...] 语法(而不是一直使用 db.contents[...]);对象的唯一数据(属性)确实是一个字典。我想向数据库添加一些方法(例如get_image_by_name(),或get_image_by_code(),例如),并且只覆盖__init__(), 因为图像数据库是由包含它的目录定义的。

总而言之,(实际)问题可能是:对于表现得像字典的东西,除了它的初始化不同(它只需要一个目录名称)并且它有其他方法之外,什么是一个好的实现?

许多答案中都提到了“工厂”。所以我想这一切都归结为:你是继承dict,覆盖__init__()和添加方法,还是你编写一个返回dict的(工厂)函数,你添加方法?我倾向于第一种解决方案,因为工厂函数返回一个对象,其类型并不表明它具有额外的语义和方法,但你怎么看?

编辑 2

我从每个人的回答中得知,当新类“不是字典”时,将 dict 子类化不是一个好主意,特别是当它的__init__方法不能采用与 dict 相同的参数时__init__(在“实际问题”中就是这种情况)多于)。换句话说,如果我理解正确的话,共识似乎是:当您子类化时,所有方法(包括初始化)必须具有与基类方法相同的签名。例如,这允许 isinstance(subclass_instance, dict) 保证subclass_instance.__init__()可以像 一样使用dict.__init__()

另一个实际的问题随之而来:除了初始化方法之外,和dict一样的类应该如何实现?没有子类化?这需要一些麻烦的样板代码,不是吗?

0 投票
7 回答
5244 浏览

c++ - 我需要一些 C++ 大师关于扩展 std::string 的意见

我一直希望 STL 的字符串具有更多功能。由于对 STL 类型进行子类化是不行的,所以我看到的大多数推荐的扩展这些类的方法就是编写将类型作为第一个参数的函数(不是成员函数)。

我从来没有对这个解决方案感到兴奋。一方面,所有这些方法在代码中的位置并不一定很明显,另一方面,我只是不喜欢语法。我想用 . 当我调用方法时!

不久前,我想出了以下内容:

请注意,StringBox 需要引用 std::string 进行构造...这对其使用设置了一些有趣的限制(我希望,这意味着它不会导致字符串类扩散问题)...在我自己的代码中,我几乎总是只是在一个方法的堆栈上声明它,只是为了修改一个 std::string。

一个使用示例可能如下所示:

我的问题是:StackOverflow 社区的 C++ 大师如何看待这种 STL 扩展方法?

0 投票
2 回答
1144 浏览

zend-framework - zend_form 访问父表单元素

我找不到关于如何在子类表单中使用父表单元素的任何参考。可能是因为除了我之外的每个人都很明显。这让我很难过。这是我尝试过的。

起初,在我的表单构造函数中,我调用了

然后像这样访问父元素

问题是所有父表单元素都会显示是否显式调用。有人说,“不要用__construct(),改用init()函数。所以我把构造函数改成init(),把父构造函数注释掉,然后跑表单,就炸了说不能通过setName() 的空值。我注释掉了所有 seName() 调用并运行了表单,但只显示了在子类表单中实例化的元素。

我的问题是:如果我不使用父构造函数,我如何获取和使用父表单元素?

已解决:由于构造函数切换为init,所以对parent的调用也需要切换。对于有php背景的人来说很容易。对于一个没有的人来说不是那么多。

采用