静态方法动态方法

静态方法

  • 属于类:静态方法属于类本身,而不是类的实例。
  • 调用方式:可以通过类名直接调用,无需创建类的实例。
  • 访问限制:不能直接访问类的非静态成员(包括变量和方法),因为它们需要与类的实例关联。
  • 内存使用:静态方法在类加载时加载到内存中,所有实例共享同一方法。
  • 常用场景:用于工具类或实用程序类,提供不依赖于对象状态的功能。
  • 例子: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();
    }

}
posted @ 2024-07-31 11:48  wen-210162704027  阅读(15)  评论(0编辑  收藏  举报