Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在这种情况下,我应该使用继承还是接口?_Java_Inheritance_Interface - Fatal编程技术网

Java 在这种情况下,我应该使用继承还是接口?

Java 在这种情况下,我应该使用继承还是接口?,java,inheritance,interface,Java,Inheritance,Interface,在做了大量的阅读并了解了继承之后,我发现了一些文章说继承非常平淡,接口也更好,我正试图通过一些例子来了解它 这里我有一个测试自动化框架中的场景,其结构如下: public abstract class BaseIntegrationTest { } public abstract class BaseEducationIntegrationTest extends BaseIntegrationTest { } public class EducationTeacherTest extend

在做了大量的阅读并了解了继承之后,我发现了一些文章说继承非常平淡,接口也更好,我正试图通过一些例子来了解它

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

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)有很大帮助


谢谢您的时间。

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

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

欢迎使用堆栈溢出!许多好的问题都会根据专家经验产生一定程度的意见,但对这个问题的回答往往几乎完全基于意见,而不是事实、参考资料或具体的专业知识。不幸的是,这使得这个问题脱离了这个网站的主题。如果你能让你的问题符合的规则,那么请这样做。很难说没有看到确切的这些类做什么。通常情况下,interace是首选的,因为您可以实现多个接口,并通过组合将其方法委托给其他类——模仿多重继承。