关于java接口的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 20:37:14
interface Computable
{final int MAX=100;
void speak(String s);
int f(int x);
float g(float x,float y);
}
abstract class A implements Computable
{public int f(int x)
{int sum=0;
for(int i=1;i<=x;i++)
sum=sum+1;
return sum;
}
}
public class A1
{public static void main(String args[])
{
System.out.println("sum="+A.f(100));
}
}

提示错误:无法从静态上下文中引用非静态 方法f(100);
怎么回事??

interface Computable
{final int MAX=100;
void speak(String s);
int f(int x);
float g(float x,float y);
}
abstract class A implements Computable
{public static int f(int x) //这行改了 应该是这样吧 我没有运行 你自己试下
{int sum=0;
for(int i=1;i<=x;i++)
sum=sum+1;
return sum;
}
}
public class A1
{public static void main(String args[])
{
System.out.println("sum="+A.f(100));
}
}

public static int f(int x) 你的f函数不是静态的

所以你必须用A实例化一个对象才可以调用
例如
A a=new A();

System.out.println("sum="+a.f(100));

f为实例方法,实例方法只能由实例调用,而你的A是一个类,A.f(100)只有当你的f是一个static方法的时候才能这样用
你可以这样做new A().f(100);

声明为静态方法

可以把方法定义成静态的啊!