实现方法的不同方式

时间:2019-04-29 19:26:19

标签: java

我正在开始编码,我发现了有关在另一个项目中实现方法的问题。

例如,在这段代码中,我可以在我的项目CreateECAsDefinitions中使用在CreateECASPageObject中使用的方法,但是我知道如果我在此类中使用extends,那么我也可以使用这些方法。我很困惑。

我可以使用如下方法: 以下项目中的IngresarECAs.FirstMethod();

使用扩展和我使用的方式是否相同?

public class CreateECAsDefinitions {

    private LectorExcel excel;
    private static  XSSFSheet hoja;
    private int fila;

      @Before
        public void before(Scenario scenario) {
            this.scenarioActual = scenario;
        }


      @Steps  
      private CreateECAsPageObject IngresarECAs ;
      private ValidacionCasosPageObject validacionCasos;

我想知道我放的有什么区别

private CreateECASPageObject IngresarECAs;

或输入以下内容:

public class CreateECAsDefinitions extends CreateECASPageObject

在一开始。

2 个答案:

答案 0 :(得分:4)

这与实现方法没有什么不同。这就是composition and inheritance

之间的区别

如果不需要或不需要CreateECAsDefinitions继承 CreateECASPageObject的所有可访问字段和方法,则不应使用extends。换句话说,您通过“组合”而不是“继承”隐藏了可能的父类的功能。

鉴于您尚未显示方法定义,因此很难说出在您的情况下应该采用哪种方法,但是如果发现自己为CreateECAsPageObject类中的每个方法编写此模式,则可能想再使用继承。

private CreateECAsPageObject ingresarECAs ;

public void firstMethod() {
    ingresarECAs.firstMethod();
}

答案 1 :(得分:0)

您问继承与组成之间的区别。这是一个广泛的主题。
继承(extends关键字)和组合(类中的private实例字段)是在两个类之间设置依赖项的两种不同方法。
一般的习惯用法是偏向于组合而不是继承,因为组合在可能性方面更为灵活(例如,您可以组合多个字段,但继承一个类),并且减少了两个类之间的耦合。但是在某些情况下,继承对于减少样板代码(重复代码)或冗长是有意义的。

在继承的情况下,您编写firstMethod(),在组合的情况下,您必须编写ingresarECAs.firstMethod()。在这种简单的情况下,很难以第一种或第二种方式发现巨大的设计优势。
但是在某些情况下,定义基本测试类可能会迫使其他测试类依赖相同的逻辑。
因此,我绝对可以认为您应该考虑自己的要求,并根据需要在继承和组合之间的正确位置设置光标。