关于static误区
(1)静态方法(带static)
用
static修饰的方法(如test())是静态方法,属于类本身。因此:- 可以直接通过
类名.方法名()调用(无需创建对象); - 内部不能直接访问实例变量或实例方法(因为它们属于对象,而静态方法不依赖对象)。
class Demo {static void staticMethod() { // 属于类,直接通过Demo.staticMethod()调用} }- 可以直接通过
(2)实例方法(不带static)
不带
static修饰的方法(如display())是实例方法,属于对象。因此:- 必须通过
对象.方法名()调用(必须先创建对象); - 内部可以直接访问实例变量和静态成员(因为对象存在时,类一定存在)。
class Demo {void instanceMethod() { // 属于对象,必须通过new Demo().instanceMethod()调用} }- 必须通过
3. 一句话总结:
static是 “类级成员” 的标志 —— 带static的成员属于类,不依赖对象;不带static的成员属于对象,必须通过对象使用。所以,“实例方法必须通过对象调用”“静态方法可以直接通过类调用” 的规则,本质上是由static关键字的特性决定的。

有关系,而且是直接的因果关系。
test()是被static修饰的静态方法,display()是实例方法(没有static修饰)。
静态方法属于类,不依赖任何对象实例即可调用;而实例方法属于对象,必须通过具体的对象才能调用。
在静态方法test()中,没有创建任何对象实例,所以无法直接调用属于对象的实例方法display()。如果要在静态方法中调用实例方法,必须先创建该类的对象,再通过对象来调用,例
public static void test(){类名 对象名 = new 类名();对象名.display();
}
