2017-08-14 157 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

相关问题