interface InterfaceExample1 { int i=4; int k=5; void func1();
int func2(int x); }public class InterfaceClass1 implements InterfaceExample1 { int j; public void func1() { System.out.println("func1= "+i); } public int func2(int i) { System.out.println("func2= "+i); return i; }
int func2(int x)应该有返回值的啊,可是为什么用j=c.func2(k);会出现非静态变量不能引用静态上下文呢?请高手指点
我觉得是你的j定义的位置和你的j被付值的位置的问题。 interface InterfaceExample1 { int i=4; int k=5; void func1();
int func2(int x); }public class Test implements InterfaceExample1 {
public void func1() { System.out.println("func1= "+i); } public int func2(int i) { System.out.println("func2= "+i); return i; }
public static void main(String[] args) { int j; Test c=new Test(); c.func1(); j=c.func2(k); System.out.println(c.func2(k)); } } 如果这样的话 你再尝试下 是不是正确了呢。
interface InterfaceExample1 { int i=4; int k=5; void func1();
int func2(int x); }public class Test implements InterfaceExample1 { static int j; public void func1() { System.out.println("func1= "+i); } public int func2(int i) { System.out.println("func2= "+i); return i; }
public static void main(String[] args) { Test c=new Test(); c.func1(); j=c.func2(k); System.out.println(c.func2(k)); } } 这样也能做到类型的统一。
->错
多个实例公用一个为static
{
int i=4;
int k=5;
void func1();
int func2(int x);
}public class InterfaceClass1 implements InterfaceExample1
{
int j;
public void func1()
{
System.out.println("func1= "+i);
}
public int func2(int i)
{
System.out.println("func2= "+i);
return i;
}
public static void main(String[] args)
{
InterfaceClass1 c=new InterfaceClass1();
c.func1();
j=c.func2(k);//这一句为什么不行????
System.out.println(c.func2(k));
}
}
你好好看看书吧,能用对象调用static变量吗?
不好意思,是我错了
请大哥原谅!!!
interface InterfaceExample1
{
int i=4;
int k=5;
void func1();
int func2(int x);
}public class Test implements InterfaceExample1
{
public void func1()
{
System.out.println("func1= "+i);
}
public int func2(int i)
{
System.out.println("func2= "+i);
return i;
}
public static void main(String[] args)
{
int j;
Test c=new Test();
c.func1();
j=c.func2(k);
System.out.println(c.func2(k));
}
}
如果这样的话 你再尝试下 是不是正确了呢。
{
int i=4;
int k=5;
void func1();
int func2(int x);
}public class Test implements InterfaceExample1
{
static int j; public void func1()
{
System.out.println("func1= "+i);
}
public int func2(int i)
{
System.out.println("func2= "+i);
return i;
}
public static void main(String[] args)
{
Test c=new Test();
c.func1();
j=c.func2(k);
System.out.println(c.func2(k));
}
}
这样也能做到类型的统一。
----------
你改成c.j=c.func2(k)试试,这句是定义再Static方法中的,Static方法是可以根据
类名.静态方法 进行访问,变量j是实例变量,就是说必须要有类的实例进行引用才行的。