实例化一个扩展实现接口的抽象类的类

时间:2014-06-26 13:07:01

标签: java inheritance abstract-class

所以我有一个名为COL的类包含以下函数:

public class CatalogueOfLife extends EDITPlatform {

private static final String nomatchfound = "there is nothing";

protected String getNoResultsMessage(){
      return COL.nomatchfound;
}

然后是一个名为 interface 的接口,它具有以下功能:

public interface WSInterface {

public boolean matchfound(String noMatchString);
}

最后一个名为 platform 的抽象类,它使用以下两个函数:

public abstract class EDITPlatform implements WSInterface{

public boolean matchfound(String noMatchString){
   if (noMatchString.contains(getNoResultMessage())){
        return true;
   }
   return false; }

现在我想从main函数调用matchfound函数。我只能使用 COL 对象,但问题是我需要的不仅仅是一个类来扩展平台。

2 个答案:

答案 0 :(得分:0)

已更新:您的问题是EDITPlatform没有getNoResultMessage()方法。所以你不能称之为。

如果您需要在CatalogueOfLife中定义该方法,那么您应该使用抽象方法:

public abstract class EDITPlatform implements WSInterface{

    protected abstract String getNoResultMessage();

    public boolean matchfound(String noMatchString){
        if (noMatchString.contains(getNoResultMessage())){
            return true;
        }
        return false; 
    }
}

然后在实体类

中覆盖它
public class CatalogueOfLife extends EDITPlatform {

    private static final String nomatchfound = "there is nothing";

    @Override
    protected String getNoResultsMessage(){
        return CatalogueOfLife.nomatchfound;
    }
}

最后

CatalogueOfLife col = new CatalogueOfLife();
boolean matched = col.matchFound(myString);

答案 1 :(得分:0)

如果COL是Platform的子类,那么在代码中

if (noMatchString.contains(getNoResultsMessage()))
平台无法访问

getNoResultsMessage()

由于您已在Platform中实施了界面的所有方法,因此无需abstract

这就是你要找的东西:

class CatalogueOfLife // extends EDITPlatform
{
    private static final String nomatchfound = "there is nothing";

    protected String getNoResultsMessage() {
        return CatalogueOfLife.nomatchfound;
    }
}

interface WSInterface {
    public boolean matchfound(String noMatchString);
}

class EDITPlatform extends CatalogueOfLife implements WSInterface {
    public boolean matchfound(String noMatchString) {
        if (noMatchString.contains(getNoResultsMessage()))
            return true;
        return false;
    }
}

public class MainClass {

    public static void main(String[] args) {
        EDITPlatform plat = new EDITPlatform();
        System.out.println(plat.getNoResultsMessage());
        System.out.println(plat.matchfound("there is nothing"));
    }

}