呵呵 你问你这个问题我曾经也疑惑过 如果你细心的话你会发现 毕老师在第六天的视频中 讲到类方法和实例方法的时候说过这个问题 现在我来回答你的这个问题
首先,你要先明白,实例的方法既能对类变量的操作,也能对实例变量进行操作,而类方法只能对类变量进行操作,
其次,同一个类中的方法可以相互调用,实例方法可以调用该类中的其他方法,类中的类方法只能调用该类的方法,不能调用实例方法.
我这里给你举出一个例子,静态成员变量及方法的调用,代码如下:
package lession1;
import java.io.IOException;
public class HelloWorld {
private static int a = 10;
private int b;
public static void main(String[] args) throws IOException,Exception
{
//静态变量或方法可直接调用
hello1();
System.out.println(a);
//静态变量或方法也可以通过类名.成员名调用
HelloWorld.hello1();
System.out.println(HelloWorld.a);
//非静态方法必须通过类的实例来调用
HelloWorld helloWorld = new HelloWorld();
helloWorld.hello2();
//非静态变量必须通过类的实例来调用
System.out.println(helloWorld.b);
}
//静态方法hello1
//静态方法内可以调用非静态方法
public static void hello1()
{
System.out.println("Hello World! -1");
}
//非静态方法hello2
//非静态方法内也可以调用静态方法
public void hello2()
{
System.out.println("Hello World! -2");
}
}
输出结果:
Hello World! -1
10
Hello World! -1
10
Hello World! -2
0
通过这个例子,你会发现:
1.静态变量或方法可直接调用
方式一:staticMethodName();
方式二:ClassName.staticMethodName();
2.非静态方法必须通过类的实例来调用
步骤一:
定义一个类的实例 HelloWorld helloWorld = new HelloWorld();
步骤二:通过实例调用 helloWorld.hello2();
注:如果把hello2方法定义为static,则会出现warnings如下:
the static method hello2() from the type HelloWorld should be accessed in a static way.
如果用实例的方式去调用静态变量a,则会出现warnings如下:
the static field a should be accessed in a static way.
这是我的理解,希望对你有用! |