所以,我有这个讲座,我正在准备考试。我必须编写代码,以便我的代码通过每个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());
}
答案 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,如果只在子类中扩展一个类,则使用继承(子类)功能。