2017-05-31 34 views
-1

所以我有一个名为Moon的类,它实现了两个接口Inhabitable和Orbitable,两个接口都有两个抽象方法。在我的班上,我重写了两种抽象方法。 Orbitable是给我没有错误,但居住是。这是错误。月亮不是抽象的

1 error found: 
File: /personalFilename/ [line: 1] 
Error: Moon is not abstract and does not override abstract method chanceOfLife(int) in Inhabitable 

月亮类

public class Moon extends Planet implements Inhabitable, Orbitable 
{ 
    public Moon() 
    { 
    super(); 
    } 

    public void orbitSpeed(int speed) 
    { 
    this.setDistance((speed/6.28) * 8760); 
    } 

    public void chanceOflife(int oxygen) 
    { 
    this.setOxygenLevels(oxygen); 
    } 

} 

轨道接口

public interface Orbitable 
{ 
    public abstract void orbitSpeed(int speed); 
} 

可居住接口

public interface Inhabitable 
{ 
    public abstract void chanceOfLife(int oxygen); 
} 
+3

投票关闭作为印刷错误 –

+1

当然,使用'@ Override'注释来表示您认为覆盖其他方法的方法。编译器会尖锐地告诉你他们没有。 –

+0

'chanceOflife'!= = chanceOfLife':'l'!='L' –

回答

6

chanceOfLife(int oxygen)chanceOflife(int oxygen),它是资本L.

有需要时覆盖的方法是明确的,虽然它只是一个错字几件事情:

你必须有相同的方法签名(方法名称和参数)当你重写一个方法。

您不必在接口方法中输入public abstract。默认情况下,接口中的所有方法都是public和abstract。

根据气垫船Full Of Eels的评论,当你重写一个方法时,使用Override,它会检查覆盖是否可以。

+1

我曾期待让你失望,因为来吧,这是一个错字的答案,但这实际上是一个非常翔实的答案。做得好。 –

+0

@MadPhysicist谢谢Mad。当我们清楚基本概念时,它会减少错字:) – haifzhan

+0

如果您还提到有关使用'@ Override'的相关信息以及它如何提供帮助,则更好。 –

相关问题