何时选择接口或子类

时间:2016-03-11 13:39:14

标签: java

所以,我有这个讲座,我正在准备考试。我必须编写代码,以便我的代码通过每个Junit测试。 我总是不知道如何弄清楚的一件事是,我什么时候应该使用接口或子类......

有人可以告诉我如何根据Junit测试决定使用哪个?

我有一列火车,有两种类型的火车:TGV和Pendular

P.S我知道测试名明确说明了子类,但忽略了......

公共类RailRoadTests {

@Test
public void testTrain() {
    Train c1 = new Train("Regional");
    assertEquals("Regional", c1.getName()); 

    Train c2 = new Train("Intercidades");
    assertEquals("Intercidades", c2.getName()); 
}

@Test
public void testSubclassesTrain() {     
    Train tgv = new TGV("Speeder");
    assertEquals("Speeder", tgv.getNome());

    Train pendular = new Pendular("Alfa Pendular");
    assertEquals("Alfa Pendular", pendular.getNome());
}

3 个答案:

答案 0 :(得分:0)

如果两种类型的列车共享相似的功能或代码,则子类最佳。 接口允许使用相同的方法签名,但不包含实际代码(除非您使用的是Java 8)。

答案 1 :(得分:0)

接口确保实现它的每个类具有相同的方法签名(命名和参数)。每个类可能对这些方法签名具有完全不同的代码实现。它们根本不一定共享任何代码,尽管它们理论上可以。

当您进行子类化时,您可以从基类获得共享代码。您还可以通过从方法中调用super([parameters])来构建基本功能。或者,您可以使用子类范围内的基本方法的现有功能(protected,public等)。

When to implement an interface and when to extend a superclass?

可能重复

答案 2 :(得分:0)

如果子类想要扩展两个或更多个类(Multiple Inheritance),那么使用Interface,如果只在子类中扩展一个类,则使用继承(子类)功能。