静态方法
- 属于类:静态方法属于类本身,而不是类的实例。
- 调用方式:可以通过类名直接调用,无需创建类的实例。
- 访问限制:不能直接访问类的非静态成员(包括变量和方法),因为它们需要与类的实例关联。
- 内存使用:静态方法在类加载时加载到内存中,所有实例共享同一方法。
- 常用场景:用于工具类或实用程序类,提供不依赖于对象状态的功能。
- 例子:
Math.abs()
,System.out.println()
。
动态方法
- 属于实例:动态方法属于类的实例,需要通过对象来调用。
- 调用方式:必须通过类的实例来调用,或者在静态上下文中通过类名调用静态方法。
- 访问能力:可以访问类的静态和非静态成员,包括变量和方法。
- 内存使用:每次创建类的实例时,都会为该实例分配内存,包括其动态方法的引用。
- 常用场景:用于需要访问或修改对象状态的场景,实现对象的行为。
- 例子:任何类的非静态方法,如
String.length()
实例
public class MyClass {
// 静态变量
private static int staticVar = 0;
// 非静态变量
private int instanceVar = 0;
// 静态方法
public static void staticMethod() {
System.out.println("Static method can access staticVar: " + staticVar);
// 下面的代码将导致编译错误,因为静态方法不能访问非静态成员
// System.out.println(instanceVar);
}
// 动态方法
public void instanceMethod() {
System.out.println("Instance method can access both staticVar and instanceVar: " + staticVar + ", " + instanceVar);
}
}
public class Test {
public static void main(String[] args) {
// 静态方法可以通过类名直接调用
MyClass.staticMethod();
// 创建MyClass的实例
MyClass myObject = new MyClass();
// 动态方法需要通过对象来调用
myObject.instanceMethod();
}
}
标签:调用,静态方法,实例,staticVar,MyClass,动态,方法,public
From: https://www.cnblogs.com/luoyiwen123/p/18334317