【发布时间】:2016-06-26 18:54:16
【问题描述】:
所以,我有这个讲座,我正在准备考试。我必须编写代码,以便我的代码通过每个 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());
}
【问题讨论】:
-
使用接口或子类是完全不同的两件事,目的也完全不同。我不明白你想问什么。
-
任何一个都可以在这里工作。
-
我也不明白这个问题。关键是:无论如何你确实需要子类;因为您必须使用“新”创建一些对象。现在;如果您分配像
InterfaceName myvar = new(...这样创建的对象,或者如果您这样做SubclassName myvar = new...只是一个微妙的细节。并且 - 一般无法回答两个版本中哪个“更好”的决定。这样的问题真的只有在具有真实需求的“真实”问题的背景下才有意义。 -
您可以使用这个经验法则:如果您需要所有子类之间的共同行为,请使用基本抽象类。另一方面,如果没有默认行为,我们使用一个接口。但是,如果您使用的是 Java 8,则可以使用具有默认方法实现的接口,因此您可以选择两者。
标签: java