2017-08-14 194 views
-1

程序1implem不是抽象和在延伸的接口不覆蓋抽象方法FinalScore()

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

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

錯誤很明顯,你沒有在你的'實現類'中重載'FinalScore()'。所以重寫它,你的程序就可以工作。 –

+0

請遵循java的命名約定 –

回答

0

你可以找到一個Java的接口的定義[site]

它說

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

所以,你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

'公共類實現擴展{ \t private String Home; \t私人字符串訪問; \t private String Final; \t \t public String HomeTeamScored(){ \t \t return Home; \t} \t \t公共字符串VisitingTeamScored(){ \t \t回訪; \t} \t public String FinalScore(){ \t \t return Final; \t} \t \t公共無效設爲首頁(字符串首頁){ \t \t這一點。首頁=家庭; (字符串訪問){ \t \t this.Visit = Visit; \t}}' 現在我得到implem不是抽象的,在java中不重寫抽象方法setVisitingTeam(字符串) 對不起,我很新在這裏 – Tsuna

0

你的非抽象類實現沒有實現所有的接口方法。 Public String FinalScore()就是這樣一種方法。

+0

'公共類implem實現擴展{ \t私人字符串家; \t私人字符串訪問; \t private String Final; \t \t public String HomeTeamScored(){ \t \t return Home; \t} \t \t公共字符串VisitingTeamScored(){ \t \t回訪; \t} \t public String FinalScore(){ \t \t return Final; \t} \t \t 公共無效設爲首頁(字符串,首頁){ \t \t this.Home =首頁; (字符串訪問){ \t \t this.Visit = Visit; \t}}' 現在我得到implem不是抽象的,並在Java 不重寫抽象方法setVisitingTeam(字符串),對不起,我很新在這裏 – Tsuna

相關問題