首页 新闻 会员 周边

初学Java,关于接口的一个问题?

0
悬赏园豆:100 [已解决问题] 解决于 2016-03-09 14:25

一、定义接口,源码如下:

public interface Myinterface
{
 static final String MyifName="我的接口";
 static final String MyifPrice="价格";
 public double getprice();
}

 

二、使用接口的源码如下:

public class UseMyinterface
{
    public static void main(String[] args)
    {
        MyServer s = new MyServer();
        System.out.println(s.MyifName+s.MyifPrice);
        System.out.println(s.getprice());
    }
    class MyServer implements Myinterface
    {
        public double getprice()
        {
            return 666.66;
        }
    }

}

三、现在对UseMyinterface进行编译的时候,出现如下提示:

瑞得的主页 瑞得 | 初学一级 | 园豆:54
提问于:2016-03-09 13:56
< >
分享
最佳答案
0
public class UseMyinterface
{
    public static void main(String[] args)
    {
        MyServer s = new MyServer();
        System.out.println(s.MyifName+s.MyifPrice);
        System.out.println(s.getprice());
    }
}
    class MyServer implements Myinterface
    {
        public double getprice()
        {
            return 666.66;
        }
    }

你把MyServer的类提到UseMyinterface类的外面

收获园豆:100
刘宏玺 | 专家六级 |园豆:14020 | 2016-03-09 14:03

非常感谢刘老师,提到UseMyinterface类的外面就可以了,那个错误提示是什么意思?

瑞得 | 园豆:54 (初学一级) | 2016-03-09 14:10

@瑞得: 

静态方法可以不用创建对象就调用,非静态方法必须有了对象的实例才能调用.因此想在静态方法中引用非静态方法是不可能的

Ctrl` | 园豆:3317 (老鸟四级) | 2016-03-09 14:14

@瑞得: 

MyServer放在UseMyinterface中时,属于UseMyinterface的一个成员

在静态方法main中不能访问非静态的成员,也就不能直接new MyServer()

刘宏玺 | 园豆:14020 (专家六级) | 2016-03-09 14:14

@g皓皓: 不是很明白,这里的s是非静态变量吗?

瑞得 | 园豆:54 (初学一级) | 2016-03-09 14:17

@瑞得: 你把类MyServer定义到了类UseMyinterface的内部,通俗点就是类UseMyinterface的成员变量,你没有加上static,那就是非静态的

MrNice | 园豆:3450 (老鸟四级) | 2016-03-09 14:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册