【问题标题】:Should I be using inheritance or interfaces in this case?在这种情况下我应该使用继承还是接口?
【发布时间】:2018-04-02 23:42:21
【问题描述】:

在大量阅读并深入了解继承之后,我发现许多文章说继承相当乏味,而接口要好得多,我正在尝试通过一些示例来了解它,

这里我有一个测试自动化框架中的场景,其结构如下:

public abstract class BaseIntegrationTest { }

public abstract class BaseEducationIntegrationTest extends BaseIntegrationTest { }

public class EducationTeacherTest extends BaseEducationIntegrationTest { }

public class EducationStudentTest extends BaseEducationIntegrationTest { }

public class EducationTeacherSuite extends EducationTeacherTest { }

这可以接受吗?我应该在这种情况下使用接口吗?我正在努力理解 A)为什么(如果是的话)和 B)什么时候这样做,但我想如果我弄清楚 A),它将对 B)有很长的路要走。

感谢您的宝贵时间。

【问题讨论】:

  • 欢迎来到 Stack Overflow!许多好的问题会根据专家的经验产生一定程度的意见,但这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定的专业知识。不幸的是,这使这个问题脱离了本网站的主题。如果你可以edit你的问题符合help center的规则,那么请这样做。
  • 很难说没有看到这些类究竟做了什么。通常首选交互,因为您可以实现多个接口,并通过组合将它们的方法委托给其他类——模仿多重继承。

标签: java inheritance interface


【解决方案1】:

在这种情况下,您可以问自己以下 2 个问题:

  • 是否所有测试都有一些共同的行为和/或状态?如果是,请将BaseIntegrationTest 设为抽象类,并为其添加常用状态(字段)和行为(方法)。
  • 特定测试是否需要从其他任何东西继承?如果是,请将BaseIntegrationTest 设为接口,因为不允许多重继承。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    相关资源
    最近更新 更多