问题标签 [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 投票
1 回答
3206 浏览

wpf - 子类化 WPF 窗口

我创建了一个 WPF 窗口

比我将其类定义修改为:

编译器抛出:

“'myWindow' 的部分声明不得指定不同的基类”

我的窗口.Xaml:

所以在某个地方,还有另一个部分类,它继承自“Window”,但我找不到它。如何覆盖我的案例以使用子类窗口?


谢谢乔恩,这就是问题所在。还发现了这篇有用的文章: http: //geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx

0 投票
1 回答
824 浏览

objective-c - Objective C - 具有多个初始化方法的子类

我正在寻找一种向多个初始化方法添加新参数的便捷方法。它有点难以描述,但我的问题如下:

我有一个班级女巫实现了各种初始化方法。铁

现在我想创建一个十字准线类作为子类。所以我想添加一些行作为实例变量。所以问题是,每个十字准线对象都必须用一些特定的值进行初始化,但是初始化圆的方法当然不会改变。所以我想要超类中的每个初始化方法,但将这些特定的参数添加到每个。

直接的方法(在我没有经验的眼里)是覆盖女巫中的每个方法,然后调用相应的超级方法,然后做我的事情。但是,如果您有 10 个或更多的 init 方法并且只想为每个方法添加相同的参数,这将非常烦人。所以我问是否有更好的方法来实现这一点?有或没有修改超类的能力。

多谢

0 投票
1 回答
559 浏览

iphone - 如何从已经存在的类创建自定义类?(现有类不支持 NSCoding)

我正在尝试做的是将一个转换EKEventNSData,然后将其转换回一个EKEvent.

我环顾四周,注意到为了使用NSKeyedArchiver,该类必须符合NSCoding协议。我还发现,如果我正在创建一个自定义类,我可以通过在这样的自定义类上实现来使其符合NSCoding协议。encodeWithCoder:

本质上,我假设为了将我的转换EKEventNSData和转换回来,我需要创建一个自定义类(让我们称之为CustomEvent)我需要执行以下操作:

我可以在学习如何创建自定义类方面获得任何帮助,该类复制现有类,但我实现的例外是encodeWithCoder:使其符合NSCoding

我正在查看 EKEvent.h,并且我知道它涉及我还必须复制的其他类(因为它们也不符合NSCoding)。任何人都可以给我一个教程链接或帮助我吗?

提前致谢!

0 投票
2 回答
467 浏览

c++ - C++ 子类化表单以捕获 F1 - F12 键

主窗体打开一个子窗体,上面有一些按钮控件。我需要捕获键盘事件,因此我对其中一个控件进行了子类化。一切都很好,直到控制当然失去焦点。

理想情况下,只要这个子窗体是打开的,我想将焦点分配给这个控件,从而捕获所有的击键,无论用户点击哪里。

我怀疑超类可能是一个更好的方法,但我并不熟悉它。

也许我应该做的是在主窗体上使用加速器?

添加:我应该提到主窗体有一个大型列表视图控件,该控件被子类化以恢复向上/向下箭头和鼠标滚轮等。

0 投票
2 回答
5844 浏览

python - Python 装饰器和类继承

我正在尝试使用装饰器来管理用户可能会或可能不会访问网络应用程序(在 Google App Engine 上运行)中的资源的方式。请注意,我不允许用户使用他们的 Google 帐户登录,因此无法在 app.yaml 中设置对特定路由的特定访问权限。

我使用了以下资源:
- Bruce Eckel 的装饰器指南
- SO:get-class-in-python-decorator2
- SO:python-decorators-and-inheritance
- SO:get-class-in-python-decorator

不过我还是有点迷茫……

这是我的代码!在以下示例中,current_user 是属于 RequestHandler 类的 @property 方法。它返回存储在数据存储中的 User(db.model) 对象,其级别为 IntProperty()。

但是,我的应用程序对不同类型的资源使用不同的控制器。为了在所有子类中使用 @requiredLevel 装饰器,我需要将其移动到父类 (RequestHandler) :

我的想法是使用以下代码访问所有控制器子类中的装饰器:

我想我刚刚达到了关于装饰器和类继承的知识的极限:)。有什么想法吗 ?

0 投票
1 回答
1347 浏览

iphone - 如何禁用 UITextView 中的选择功能?

我想在我的 iPhone 应用程序中创建一个文本显示区域(UILabel 或 UITextView),它 (1) 允许滚动并且 (2) 不允许选择。我尝试了以下技术,但均未成功:

  1. 基本 UILabel:不允许滚动,并将文本剪切到屏幕上 UILabel 空间的底部。
  2. UIScrollView 中的巨型 UILabel:UILabel 一直将文本(垂直)放置在巨型 UILabel 的中心,因此它通常位于我的 UIScrollView 之外。
  3. UITextView:到目前为止,这种方法效果最好,因为它滚动而不剪切文本。我什至可以继承 UITextView 以调整文本大小以适应 textview并将任何触摸事件传递给 superview 以检测点击和滑动但是,当用户点击并按住文本本身时,会出现文本选择界面。我对这个界面不感兴趣,它实际上分散了用户的体验。我试图子类canPerformAction:withSender:化,但显然这个函数是在点击事件之后调用的——而不是在它之前。

有谁知道如何在不禁用滚动的情况下禁用 UITextView 中的文本选择界面?

0 投票
2 回答
135 浏览

oop - 关于分类的建模问题。分型还是不分型?

我需要一些关于如何为这个简单的分类(?)示例建模的建议:
我有一个产品。一个产品可以有不同的类型,例如 ProductType 1、ProductType 2 和 ProductType 3。所有产品都有一个部件号和一个名称。它们的不同之处在于它们的价格计算方式。

  • 类型 1 的产品价格取决于产品的数量。所以如果我有 5 个产品,价格是 $x。如果我有 20 个产品,价格是 $y,以此类推。
  • 类型 2 的产品价格取决于每个产品的重量。如果重量为 5 公斤,则价格为 $x,以此类推。
  • 类型 3 中的产品具有简单的价格,例如每件产品的价格为 $x。

在我看来,每个“价格结构”都需要有一个专用的表/类。然后,产品将参考其价格结构,具体取决于产品的类型。您是只创建一个“产品类型”表并在 Product 类上有一个名为 Type 的属性,还是使用泛化,因此 Product 1/2/3 是 Product 的子类型?将有 5 种不同的价格结构,并且价格的计算方式因每种类型而异。因此,计算订单总价的逻辑取决于每种产品类型。

你能给我一些关于如何以最佳方式建模的建议吗?如果我选择 Product 类上有一个 Type 属性的方法,我想我会在我的代码中得到很多 if-else 语句。如果我选择对它们进行子类化,每个类都可以负责计算正确的价格,或者它被要求做的任何事情。

0 投票
2 回答
124 浏览

java - 从方法返回动态分配的类的对象

这可能有一个非常简单的解决方案,但我似乎无法弄清楚......
我们有一堆xQuantity 形式的类,例如DistanceQuantity、AreaQuantity 等,它们扩展了一个DimensionQuantity 类。现在可以加减DistanceQuantity's 或AreaQuantity's 等,但不能混合使用。所有子类都有 add()、subtract()、ge() 等方法,因此将共享逻辑放入 DimensionQuantity 会很好,但我一直遇到转换问题。

到目前为止,我想出的最好方法是生成一个对象,然后将其转换为子类的方法,但是完全摆脱子类 add() (和其他类似方法)会很好!这是代码(省略了一些东西):

在距离数量中:

在维度数量:

有人(或某人)可以提出更好的方法吗?

0 投票
6 回答
4731 浏览

c++ - Windows CE下单行EDIT控件按ENTER时如何关闭蜂鸣?

我正在使用 C++ 和本机 WINAPI(即没有 MFC 等)开发针对 POCKET PC 2003(Windows CE 4.2)设备的应用程序。在其中我有一个单行编辑控件主窗口的哪个部分(不是对话框);因此,当按下 ENTER 时,Windows 的正常行为是只发出哔哔声。

我使用以下代码对编辑控件的窗口过程进行了子类化以覆盖默认行为:

这会导致与按下“确定”按钮相同的行为。

现在到手头的问题:这个窗口过程不会覆盖发出哔声的默认行为。我怀疑必须有一些其他消息或在按下 ENTER 时触发的消息,但我无法捕获;我只是不知道是哪个。我真的很想阻止设备发出哔哔声,因为它会在发生项目碰撞时弄乱在某些情况下播放的其他声音,并且提醒用户这一点至关重要。

提前致谢。

0 投票
3 回答
6252 浏览

java - 从超类方法返回子类对象

我不断回到这个问题的变体:它可能有一个非常简单的解决方案,但我似乎无法弄清楚......

我有一堆 xQuantity 形式的类,例如 DistanceQuantity、AreaQuantity 等,它们扩展了一个类 DimensionQuantity。现在您可以添加或减去DistanceQuantity或AreaQuantity等,但不能混合它们,所以我认为我需要在子类中有(短)add,subtract等方法,但我想减少任何逻辑重复到最低限度。但是,我需要返回子类的一个对象,这似乎很难从超类方法中做到。我相信这可以使用反射来完成,但是AFAIK您仍然需要在子类方法的最后进行强制转换,并且我被告知反射可能很昂贵......到目前为止我想出的最好的是:

在 DistanceQuantity (和其他类似的)中:

在 DimensionQuantity 中(减去一些不太相关的语句):

任何人都可以提出更精简的代码 - 仍然是类型安全的吗?TIA