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

java - Java 中的继承——创建子类的对象也会调用超类的构造函数。为什么?

我有一个关于 Java 继承的问题。

我有两个类AandB和类 B继承自 A:

当我运行程序 B 时,输出是:

问题:为什么在我创建和对象时调用构造函数class Aclass B

我知道 B 继承了 A 的所有内容——所有实例或类变量以及所有方法,从这个意义上说,B 的对象具有 A 的所有特征以及 B 中定义的一些其他特征。但是,我不知道也没有想象一下,当我创建 B 类型的对象时,也会调用 A 的构造函数。所以,写这个:

创建两个对象 - 一个是 B 类型,一个是 A 类型

这越来越有趣了,

有人可以解释为什么会发生这种情况吗?

0 投票
18 回答
149557 浏览

java - 如何在 Java 中找到给定类的所有子类?

如何在 Java 中查找给定类的所有子类(或给定接口的所有实现者)?到目前为止,我有一种方法可以做到这一点,但我发现它效率很低(至少可以这么说)。方法是:

  1. 获取类路径上存在的所有类名的列表
  2. 加载每个类并测试它是否是所需类或接口的子类或实现者

在 Eclipse 中,有一个很好的特性,称为类型层次结构,它可以非常有效地显示这一点。如何以编程方式进行操作?

0 投票
2 回答
2521 浏览

c++ - Borland C++ Builder 中的 Windows 子类化

我们正在尝试将一段使用 CWnd.SubclassWindow 方法在 MFC 中编写的 C++ 代码转换为 Borland C++ Builder 代码。有谁知道如何进行子类化(使用 TForm 对象进行子类化) - 我们完全陷入困境。任何指针将不胜感激!蒂亚!

规格:

我们有一个现有的用 Borland C++ 编写的基类,它继承自 TForm,它用于为从它继承的所有表单赋予某种外观和感觉(例如,它处理 WM_NCPAINT 和 WM_NCHITTESTheavily)。

现在我们想使用此代码为用其他语言(准确地说是 MSVC++/MFC 和 C#)编写的表单提供相同的外观和感觉。

我们认为使用 Windows 子类化将是一个好主意,而不是重写所有代码。然后我们可以将所有现有的和测试过的代码填充到一个 DLL 中,然后只需使用 hWnd 调用它,该窗口就会自动获得新的外观和感觉。

究竟为什么这是不可能的,我真的不能说——我自己不使用 Borland C++ 编写代码。我只用了几分钟就在 MFC 中编写了一个存根,向 Borland C++ 开发人员展示了我想要什么,他们花了几天时间试图模仿 MFC 的 CWnd::SubclassWindow 方法,但没有成功。

据我了解,问题在于当您执行“new TForm()”时,会在您有机会停止之前自动创建一个新窗口。所以替换然后 WindowProc工作但不需要的 TForm 窗口在屏幕上浮动,没有用!!!!

0 投票
1 回答
1347 浏览

java - java swing:自定义一切-子类jcomponent或jpanel或...?

嗨 - 快一点 - 与 JPanel 相比,子类化 JComponent 有什么危害/价值吗?

对我来说,如果我正在做自己的绘图并且对象不会有任何子对象,它们看起来几乎是一样的,但是似乎有一个将 JPanel 子类化为 JComponent 的首选项 - 只是寻找关于为什么这可能的意见是 ...

谢谢 :-)

0 投票
2 回答
23363 浏览

iphone - 如何在 iPhone 上初始化 NSObject 的子类?

我想在一个类中编写一些方法,以便其他类可以使用[instance methodName:Parameter].

如果该类是 的子类UIViewController,我可以使用initWithNibName它来初始化它。但是我想在NSObject 的子类中编写方法,如何初始化它?

0 投票
4 回答
8616 浏览

c# - 具有相同方法的 C# 子类

我有一个有两个子类的超类。这两个子类都有一个检查章节是否有内容的方法。对于子类 1,此方法是 HasContent(int chapterID),对于子类 2,此方法是 HasContent(int chapterID, int authority)。如您所见,子类 2 有一个额外的参数。两种方法的目的是相同的。

我正在考虑将 HasContent 方法放在超类中。你认为我需要这样做吗?如果是这样,我应该如何实施?还是将这两种方法放在自己的子类中更明智?

编辑:

HasDocuments 的主体如下所示: Subclass1:

子类2:

0 投票
3 回答
3321 浏览

c# - 如何防止被覆盖的 WinForm 控件中的“默认”值?

我正在尝试学习和掌握 C# 做什么以及如何做事。从历史上看,我是一名 Visual Foxpro (VFP) 开发人员,通过创建自己的用户控件基线以在应用程序范围内使用,我对视觉继承的岁月有些宠爱。

在尝试学习 C# 中的相似之处时,我遇到了一些问题。假设我派生了我自己的标签控件(控件是标签的子类),用字体“Arial”定义,10 磅。然后,在我将其添加到的任何表单上,Designer 将自动预填一些属性值,这些值可以在 Form 类的“Designer.cs”部分中看到。

我想防止每次在表单上放置控件时生成字体、颜色、大小、自动大小等内容。如果我后来决定将字体从“Arial”10 更改为“Tahoma”11,我将不得不返回所有表单(以及任何其他自定义控件)并进行编辑以进行更改。

在 VFP 中,如果我更改基类的任何内容,所有表单都会自动识别更改。我不需要编辑任何东西(除了可能通过尺寸影响进行的对齐)......但是颜色、字体和其他所有东西在 VFP 中都没有问题......

在 C# 中,我必须返回并更改每个表单,以便它被类的新/更新值识别......

有没有合理的方法来避免这种情况?

0 投票
1 回答
739 浏览

c# - Form子类的子类显示为空

我正在编写一个应用程序,其中我有不确定的数量Forms需要一定的弹出功能(类似于 MSN,屏幕右下角的一个小窗口)。我写了第一个表格,然后想我可以复制文件来制作一个新的。到目前为止,一切都很好。过了一会儿,我意识到我可以对 Form 进行子类化,编写弹出代码,然后对新PopupForm类进行子类化以制作其他表单,以简化对弹出代码的重写。所以我这样做了,但现在我的表单没有在设计器中正确显示!它们完全是白色的(没有背景图像或控件),我无法将新控件拖到上面。我试着把

我的新表单上的类的属性Form,但它没有帮助。我需要能够更改表单的内容,而且我看不出有什么问题,所以这既烦人又令人困惑。

0 投票
2 回答
500 浏览

python - 为什么 wx.SingleChoiceDialog 没有正确子类化

我正在尝试继承 wxpython SingleChoiceDialog 类。我有一个 TableChoiceDialog 类,它继承自 SingleChoiceDialog 添加通用功能,并且我有 2 个子类用于添加更精细的功能。基本上我在 OOP'ing

在我的 TableChoiceDialog 类中,我有一行调用超类__init__,即

我遇到的问题是,根据SingleChoiceDialog.__init__文档字符串(和 wxPython API),SingleChoiceDialog 没有 self 参数作为其__init__方法的一部分。

正如我上面所说,程序会打印错误:

如果我取出 self 参数,系统会抱怨它期望一个SingleChoiceDialog对象作为第一个参数,这似乎表明它实际上想要一个对 self 的引用。

当我取出 parent 参数时,留下 self (以及我很确定的其他 3 个参数)系统抱怨它只收到 3 个参数,而它需要 4 个参数。我很确定我通过了 4 个。

所以。我犯了什么明显的错误?我是否完全误解了 python 如何处理对象(因此几乎误解了 python)?我是否误解了整个 OOP?

请帮忙。提前致谢

0 投票
4 回答
2555 浏览

python - 拦截类中类中属性的变化 - Python

我一直在搞乱 pygame 和 python,我希望能够在我的类的属性发生变化时调用一个函数。我目前的解决方案是:

这很好用,当我用 更改 rect 值时会调用 dofancystuff Firsclass.rect = pygame.rect.Rect(0,0,100,100)。但是,如果我说Firstclass.rect.bottom = 3. __setattr__并没有调用 dofancystuff。

所以我想我的问题是如何拦截对子类属性的任何更改?

编辑:另外,如果我以错误的方式解决这个问题,请告诉我在 python 方面我不是很了解。