静态的方法不能调用非静态的变量
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
静态的方法是在无关特定类的实例情况下执行的,也不会有该类的实例出现。因为静态的方法是通过类的名称来调用,所以静态的方法无法引用到该类的任何实例变量。在此情况下,静态的方法也不会知道可以使用哪个实例变量值。
如果你尝试在静态的方法内使用实例变量,编译器会认为:“我不知道你说的是哪个实例的变量!”
如果你要编译下面这段程序代码:
public class Duck {
private int size;
public static void main(String[] args) {
System.out.println("Size of duck is " + size);
}
public void setSize(int s) {
size = s;
}
public int getSize() {
return size;
}
}
你会得到编译器提示的错误。因为它不知道你说的size是哪个实例的变量!
静态的方法也不能调用非静态的方法
非静态的方法做什么工作?它们通常是以实例变量的状态来影响该方法的行为。getName()方法会返回name变量的值。谁的名字?当然是被调用对象的。
但是这一段无法通过编译:
public class Duck {
private int size;
public static void main(String[] args) {
System.out.println ("Size is " + getSize());
}
public void setSize(int s) {
size = s;
}
public int getSize() {
return size;
}
}
编译器会提示错误,因为它还是不知道是谁的size?
在线练习
{$ activeFileHint $}