首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中实现接口方法

如何在Java中实现接口方法
EN

Stack Overflow用户
提问于 2014-08-07 11:14:40
回答 5查看 207关注 0票数 0

编译以下代码时,编译器将显示一个错误:

InterfaceTest.java:19:错误:找不到符号knightObj.dispBK();

代码语言:javascript
复制
public class InterfaceTest{
    public static interface Knight{
        public void embark();
    }
    public static class BraveKnight implements Knight{
        private int id;
        public BraveKnight(int id){
            this.id = id;
        }
        public void dispBK(){
            System.out.println("ID: "+id);
        }
        public void embark(){
            System.out.println("ID: "+id);
        }
    }
    public static void main(String[] args){
        Knight knightObj = new BraveKnight(101);
        knightObj.dispBK();
    }
}

可能的原因是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-08-07 11:19:23

As 在文件中说明

定义新接口时,将定义新的引用数据类型。您可以在任何可以使用任何其他数据类型名称的地方使用接口名称。如果定义了一个类型为接口的引用变量,则分配给它的任何对象都必须是实现该接口的类的实例。

dispBK()是类的方法。& Knight是接口,方法没有在接口中声明,所以您不能。

加:

public void dispBK();在您的界面中,然后它将工作。

只有在接口中声明了所有方法时,接口引用才能保存IMPL对象。

否则,您必须使用Impl对象访问该方法。

票数 1
EN

Stack Overflow用户

发布于 2014-08-07 11:16:51

Knight是您的接口,它没有定义一个名为dispBK()的方法。knightObj对象的类型为Knight,因此需要将其转换为BraveKnight,以便能够调用dispBK()方法。

或者,您可以将dispBK()方法添加到您的接口中。

第三个选项是像这样初始化对象:BraveKnight knightObj = new BraveKnight(101);

我热情地推荐使用一些IDE,比如Eclipse,它们会捕获像这样简单的错误。

票数 6
EN

Stack Overflow用户

发布于 2014-08-07 11:18:26

将公共空dispBK()添加到接口中,然后可以实现它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25181088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档