2017-05-31 4 views
-1

私はInhabitableとOrbitableの2つのインタフェースを実装するMoonという名前のクラスを持っています。私のクラスの月では、私は両方の抽象メソッドをオーバーライドします。 Orbitableは私に間違いを与えませんが、Inhabitableです。これがエラーです。ムーンは抽象ではありません

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を入れる必要はありません。インタフェースのすべてのメソッドは、デフォルトではパブリックと抽象メソッドです。

ホバークラフトに基づいています。Eelsのコメントの完全な方法をオーバーライドすると、Overrideを使用すると、オーバーライドされているかどうかが確認されます。

+1

私はあなたに下線を引くことを期待していました。それはタイプミスの答えですが、実際これは非常に有益な答えです。よくやった。 –

+0

@MadPhysicistおかげでマッド。基本コンセプトについてはっきりしているので、タイプミスを減らすことができます:) – haifzhan

+0

'@ Override'の使用方法やその使い方についての情報があれば、より良いでしょう。 –

関連する問題