gpt4 book ai didi

Java继承——类型子类

转载 作者:行者123 更新时间:2023-11-30 08:24:19 24 4
gpt4 key购买 nike

这更像是如何设计概念

  1. 应作为具有所有公共(public)属性的基类的后类 - 具体类
  2. 问答扩展了 Post 类。它们具有 Post 的所有属性以及特定于它们的属性。
  3. 可以有不同类型的问题,如 UserAskedQuestion 或 BookQuestion - 再次扩展问题(具体类)---- 这里有 3 级继承(UserAskedQuestion -> 问题 -> 帖子)

    这是我想要实现的目标:所有这些实体都存储在数据库中,我想从那里获取(它可以是 cassandra 或 Mysql)所以我的想法是,用户的一行介绍将被保存为一个帖子,如果用户提出问题,它将是存储为 userAskedQuestion。但是现在如果我想知道该用户发布的所有帖子,它应该包括帖子(一个类轮)以及(问题)

问题:

  1. 拥有 3 级继承权好吗?由于我已经阅读了很多内容,继承会使代码复杂化,但此时我无法找到任何其他解决方案。
  2. 我应该如何尝试实现它,以便如果我获取帖子,它应该获取所有帖子、问题/答案及其子类型,如果我获取问题,它应该获取所有问题和问题子类型?
  3. 如果不是继承,有没有其他方法可以实现这种行为?

最佳答案

问题 1

当然,多级继承会给你更好的设计。我认为与其让事情复杂化,不如让事情变得更复杂,它会为你提供更高的内聚力和更少的耦合度。通过此设计,您将实现 GRAPS 的“信息专家”模式。

问题 2

参见示例 Multilevel inheritance in java with example


评论中问题的答案:从数据库获取对象作为Post类后,您可以使用java的instanceof运算符Java Doc: The Type Comparison Operator instanceof

public void doSomething(Post param) {
if( param instanceof Question ) {
System.out.println("param is a Question ");
}
else if( param instanceof Answer) {
System.out.println("param is an Answer");
}
// Even you can check for whether its UserAskedQuestion or BookQuestion also
}

关于Java继承——类型子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com