2017-08-14 9 views
-1

プログラム1implemは抽象的ではなく、

interface java{ 
    public void setHomeTeam(String name); 
    public void setVisitingTeam(String name); 
} 

プログラム2

interface extension extends java { 
    public String HomeTeamScored(); 
    public String VisitingTeamScored(); 
    public String FinalScore(); 
} 

プログラム3

public class implem implements extension{ 
    private String Home; 
    private String Visit; 

    public String HomeTeamScored(){ 
     return Home; 
    } 

    public String VisitingTeamScored(){ 
     return Visit; 
    } 

    public void setHome(String Home){ 
     this.Home = Home; 
    } 

    public void setVisit(String Visit){ 
     this.Visit = Visit; 
    } 
} 

プログラム4

に延びるインターフェースに抽象メソッドFinalScore()をオーバーライドしません
public class compilation{ 
    public static void main(String [] args){ 
     implem implement = new implem(); 

     implement.setHome("Nihon"); 
     implement.setVisit("Chuugoku"); 

     System.out.println(""+implement.HomeTeamScored()); 
     System.out.println(""+implement.VisitingTeamScored()); 
    } 
} 

これらは、インタフェースを拡張するための私のプログラムであり、私はエラーを取得する:

implem is not abstract and does not override abstract method FinalScore() in extension public class implem implements extension{ ^ 1 error

Process completed.

+1

、次のようにのように見えるように、ルールに従わなければなりませんか? 'FinalScore()'を実装してください – Eran

+0

エラーは明確です。あなたの 'implem'クラスで' FinalScore() 'がオーバーロードされていません。したがって、それをオーバーライドすると、プログラムが機能します。 –

+0

javaの命名規則に従ってください –

答えて

0

あなたはそれがとても

If your class claims to implement an interface, all methods defined by that interface must appear in its source code before the class will successfully compile

を言うJavaのインターフェイス[site]

の定義を見つけることができ、あなたのimplemクラスは、Javaとその子クラス拡張から、すべてのインターフェイスのメソッドを実装する必要があります。

あなたimplemクラスは、あなたが得たエラーメッセージについては明らかではない何

public class implem implements extension { 
    private String Home; 
    private String Visit; 

    @Override 
    public String HomeTeamScored() { 
     return Home; 
    } 

    @Override 
    public String VisitingTeamScored() { 
     return Visit; 
    } 

    @Override 
    public void setHomeTeam(String name) { 

    } 

    public void setHome(String Home) { 
     this.Home = Home; 
    } 

    public void setVisit(String Visit) { 
     this.Visit = Visit; 
    } 

    @Override 
    public void setVisitingTeam(String name) { 

    } 

    @Override 
    public String FinalScore() { 

     return null; 
    } 
} 
+0

かなり新しいごめんなさい取得をお願い致します。なぜ、 'public void setHome(String Home)'と 'public void setVisit(String Visit)'が最後の '@ Override'の後の最後の部分にできないのですか? – Tsuna

+0

特別な意味ではありません。あなたが正しく意味することを理解すれば、あなたはどんな順序でもそれを行うことができます。 – tommybee

0

、あなたが

Public String FinalScore(); 
を追加する必要があるインターフェイスのすべてのメソッドを実装する必要がある「拡張子」を実装しているので

クラスに

+0

'Public String FinalScore();'のシグネチャに一致するメソッドを追加する必要はありませんが、何を意味するのかを理解しています –

+0

'public class implemは拡張機能を実装します{ \t private String Home; \tプライベートストリング訪問; \tプライベートストリングファイナル; \t \t公開ストリングHomeTeamScored(){ \t \t return home; \t} \t \tパブリックストリングVisitingTeamScored(){ \t \tリターン訪問。 \t} \t公開ストリングFinalScore(){ \t \t return final; \t} \t \t公共ボイドsetHome(文字列ホーム){ \t \t本。ホーム=ホーム; \t} \t {\t \t this.Visit = Visit; \t}} ' は、今私はimplemが は、私がここに – Tsuna

0

抽象クラスではないimplemは、すべてのインターフェイスメソッドを実装していません。 Public String FinalScore()がその1つの方法です。

+0

かなり新しいごめんなさい抽象的ではなく、Javaで抽象メソッドsetVisitingTeam(String)をオーバーライドしない取得'パブリッククラスimplemが延長{ \tプライベート文字列のホームを実装します。 \tプライベートストリング訪問; \tプライベートストリングファイナル; \t \t公開ストリングHomeTeamScored(){ \t \t return home; \t} \t \tパブリックストリングVisitingTeamScored(){ \t \tリターン訪問。 \t} \t公開ストリングFinalScore(){ \t \t return final; \t} \t \t公共ボイドsetHome(文字列ホーム){ \t \t this.Home =ホームページ。 \t} \t {\t \t this.Visit = Visit; \t}} ' は、今私はimplemが抽象的ではなく、Javaの に抽象メソッドsetVisitingTeam(String)をオーバーライドしていない私はここに – Tsuna

関連する問題