问题标签 [class-hierarchy]

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

oop - OOP派生类和继承类之间的区别?

从 OOP 的角度来看,派生类和继承类之间有什么区别吗?还是只是术语?

0 投票
1 回答
3140 浏览

python - Python 多重继承:调用哪个 __new__?

我有一堂课Parent。我想定义一个__new__forParent所以它在实例化时有一些魔力(为什么,见脚注)。我还希望子类从这个类和其他类继承以获取父类的功能。Parent's将__new__返回子类的基类和类的子类的实例Parent

这是子类的定义方式:

但现在我不知道__new__Parent's中调用什么__new__。如果我打电话object.__new__,上面的Child例子抱怨list.__new__应该打电话。但是怎么会Parent知道呢?我让它工作,所以它遍历所有, 并在一个块内__bases__调用每个:__new__try:

但这只是看起来像一个黑客。当然,必须有更好的方法来做到这一点?

谢谢。

  • 我想使用的原因__new__是我可以返回一个子类的对象,该对象具有__int__分配给该类的一些动态属性(魔术属性等)。我本可以在 中完成此操作__init__,但如果新类具有不同的内部结构,我将无法在其中进行修改self.__class__,由于多重继承,这里就是这种情况。__init__
0 投票
4 回答
3463 浏览

c# - C# 属性在派生类中不可用

我不确定发生了什么事。我有以下基类:

然后我有这个派生类:

为什么我会收到这个错误?“'MyNamespace.MyRow' 不包含 'Keys' 的定义”。这两个类都在MyNamespace命名空间中。我尝试访问this.Keysbase.Keys但都不能从内部工作MySubRow。我尝试将Keys属性标记为publicin,MyRow但得到“修饰符 'public' 对此项目无效”,我认为是因为有必要实现接口。

0 投票
1 回答
133 浏览

google-app-engine - 从应用引擎数据存储中选择子类 - 优缺点

我的模型设置如下:

层次结构如下:用户>天>事件(用户有天。天有事件。)

当用户登录时,我想选择他们的日期(可以说是按日期范围),然后每天我想获取他们的事件。假设这些现在显示在列表中。

我应该使用父属性来创建显式实体组吗?或者我应该在一天为用户添加一个参考属性,并在一天的事件上添加一个参考属性?

每种方法的优缺点是什么?性能考虑?可扩展性考虑?而且,我将如何以最好的方式查询这个。

谢谢!

0 投票
5 回答
571 浏览

objective-c - 如何实现或模拟“抽象”OCUnit 测试类?

我有许多按继承层次结构组织的 Objective-C 类。它们都有一个共同的父级,该父级实现了子级之间共享的所有行为。每个子类都定义了一些使其工作的方法,并且父类为旨在由其子类实现/覆盖的方法引发异常。这有效地使父类成为伪抽象类(因为它本身没有用),即使 Objective-C 没有明确支持抽象类。

这个问题的症结在于我正在使用 OCUnit 对这个类层次结构进行单元测试,并且测试的结构类似:一个测试常见行为的测试类,其子类对应于每个被测子类。然而,在(有效抽象的)父类上运行测试用例是有问题的,因为如果没有关键方法,单元测试将以惊人的方式失败。(在 5 个测试类中重复常见测试的替代方法实际上并不是一个可接受的选择。)

我一直在使用的非理想解决方案是检查(在每个测试方法中)实例是否是父测试类,如果是则退出。这会导致在每个测试方法中重复代码,如果一个人的单元测试非常精细,这个问题会变得越来越烦人。此外,所有此类测试仍会执行并报告为成功,这会影响实际运行的有意义测试的数量。

我更喜欢向 OCUnit 发出信号“不要在这个类中运行任何测试,只在它的子类中运行它们”。据我所知,(还)没有一种方法可以做到这一点,类似于+(BOOL)isAbstractTest我可以实现/覆盖的方法。关于以最少重复次数解决此问题的更好方法的任何想法?OCUnit 是否有能力以这种方式标记测试类,或者是时候提交 Radar 了吗?


编辑:这是有问题的测试代码的链接。注意启动方法的频繁重复if (...) return;,包括NonConcreteClass()为简洁起见使用宏。

0 投票
2 回答
934 浏览

c++ - 关于模板化类型和类层次结构的 c++ 函数重载解决方案

可能重复:
在 C++ 中选择重载模板函数时的优先级

模板化函数让我可以方便地操作各种类型:

但在某些时候,我想对类层次结构进行一些专门化:

如果我传递了确切的类型,则确实调用了预期的专用函数Base*,但是如果我传递到,重载决议的规则似乎更喜欢通用模板版本,而不是执行静态向上Derived*转换void detroy()

当然,我可以为所有可能的派生类型创建所有重载函数,但它的可维护性较差。

我正在使用 Visual C++ 2008,有没有办法解决上述问题?

0 投票
4 回答
144 浏览

.net - 我将如何最好地解决这个对象类型的问题?某种枚举层次结构?

我很好奇在 ORM 方法中解决对象层次结构的任何解决方案(在本例中,使用实体框架 4)。我正在研究 EF4 上的一些文档,并尝试将其应用于简单的库存跟踪程序。可能的库存类型如下:

库存项目类型:

  • 硬件
    • 个人电脑
      • 桌面
      • 服务器
      • 笔记本电脑
    • 配饰
      • 输入(键盘、扫描仪等)
      • 输出(显示器、打印机等)
      • 存储(U 盘、磁带驱动器等)
      • 通信(网卡、路由器等)
  • 软件

在这种情况下处理枚举有什么建议?枚举甚至是解决方案吗?对于这样一个相对简单的实验(例如,InventoryType、InventorySubtype、InventoryTypeToSubtype 等的表),我真的不想拥有一个可笑的标准化数据库。我真的不想让我的数据模型过于复杂,因为每个子类型都被继承,即使没有包含额外的属性或方法(除了 PC 类型,理想情况下会有相关的附件和软件,但这可能超出了这里的范围)。

感觉应该有一个非常简单,优雅的解决方案,但我不能指望它。任何帮助或输入表示赞赏!

0 投票
1 回答
309 浏览

php - PHP Class在文件中找到Class文件但没有找到Class

我在一个文件中定义了一个抽象超类,在另一个文件中定义了一个子类。我需要超类文件和堆栈跟踪报告来查找包含它。

但是,当它到达“扩展”行时,它会返回一个错误:Fatal error: Class 'HTMLBuilder' not found in View/Markup/HTML/HTML4.01/HTML4_01Builder.php on line 7

刚才我使用了另一个使用工厂的类树。我刚刚在工厂和消费者之间添加了构建器层。工厂层在包含和依赖方面看起来几乎完全相同。

所以这让我觉得我一定做了一些愚蠢的事情,导致 HTMLBuilder.php 文件没有被正确包含或正确解释等等。

这是完整的堆栈跟踪(路径略有改变):

这是有问题的代码:

父类(视图/标记/HTML/HTMLBuilder.php):

子类,(查看/标记/HTML/HTML4.01/HTML4_01Builder.php):

0 投票
1 回答
118 浏览

c# - 关于在分层对象模型中使用(或不使用)XML 的建议

我正在开发一个分层对象模型,它作为 0/1 --> * 关系自引用。没有 parentID 的对象是根元素。parentID 也是自联接的外键。据我了解,使用 parentID 作为外键只会指向可能找到子元素的列->这是否会强制迭代该列的整个数据集?这是应该形成聚集索引的场景吗?....使用 XML 数据类型将所有 childrenID 存储在单个字段中然后为每个对象加载和引用该文档是否合适?似乎这样做至少可以让我简化我的对象持久层并让我更好地控制记录事务。

有什么建议吗?

0 投票
3 回答
96455 浏览

java - 如何测试一个java类是否在运行时扩展了另一个?

如何测试是否a是 的子类b