1 //静态与非静态之间的调用问题。
2 public class StaticDemo
3 {
4 /*
5 此处演示了,静态的方法(此处是main方法)不能直接调用非静态的方法,可以通过创建该类对象来调用
6 public void info()
7 {
8 System.out.println("简单的info方法!");
9 }
10 public static void main(String[] args)
11 {
12 StaticDemo s = new StaticDemo();
13 s.info();
14 }
15 */
16 public static void info()
17 {
18 System.out.println("简单的info方法!");
19 }
20 public static void main(String[] args)
21 {
22 StaticDemo s = new StaticDemo();
23 s.info(); //这样用对象来调用静态成员也是对的,单不推荐这样调用,因为静态
24 //的成员就是应该用类名来调用的。
25
26 // new StaticDemo().info();//和上面两句是一样的效果。只不过是使用了匿名的对象来调用而已。
27
28 // info(); //这样调用是对的,因为默认使用了类名调用,和下面的调用等价。
29
30 // StaticDemo.info(); //这是底层的调用原理,调用静态时,如果不是用对象来调用
31 //,并且省略的类名,则默认使用类名调用即下面一段话:
32 //(《疯狂Java讲义》如果调用static修饰的成员(包括方法,
33 //成员变量)时省略了前面的主调,那么默认使用该类作为主调。)
34 }
35 }