1、在静态方法中访问非静态的成员变量(例如在main方法中)
有很多刚刚接触Java的程序员都会有一问题,就是在main方法中访问成员变量。Main方法一般都被标示为“静态的”,意思就是我们不需要实例化这个类来调用main方法。例如,java虚拟机能够以这样的形式来调用MyApplication类:
MyApplication.main ( 命令行参数 );
这里并没有实例化MyApplication类,或者这里没有访问任何的成员变量。例如下面的程序就会产生一个编译器的错误。
public class StaticDemo
...{
public String my_member_variable = "somedata";
public static void main (String args[])
...{
// Access a non-static member from static method
System.out.println ("This generates a compiler error" +
my_member_variable );
}
}
如果你要访问一个静态方法中的成员变量(比如main方法),你就需要实例化一个对象。下面这段代码示例了如何正确的访问一个非静态的成员变量,其方法就是首先实例化一个对象。
public class NonStaticDemo
...{
public String my_member_variable = "somedata";
public static void main (String args[])
...{
NonStaticDemo demo = new NonStaticDemo();
// Access member variable of demo
System.out.println ("This WON"T generate an error" +
demo.my_member_variable );
}
}
2、在重载的时候错误的键入方法名重载允许程序员用新的代码去覆盖方法的实现
重载是一个便利的特性,很多面对对象的程序员都在大量的使用它。如果你使用AWT1.1的事件处理模型,你通常会覆盖listener方法去实现定制的功能。一个在重载方法的时候很容易犯的错误就是错误的键入要重载的方法名。如果你错误的输入了方法名,你就不是在重载这个方法了。相反的,你是在重新定义一个方法,只不过这个方法的参数和返回类型和你要重载的方法相同罢了。
public class MyWindowListener extends WindowAdapter ...{
// This should be WindowClosed
public void WindowClose(WindowEvent e) ...{
// Exit when user closes window
System.exit(0);
}
}
|
|