跳转至

48Java 中静态方法和实例方法的区别是什么?

约 573 个字 预计阅读时间 2 分钟

静态方法

1)使用 static 关键字声明的方法。 2)属于类,而不是类的实例。 3)可以通过类名直接调用,也可以通过对象调用,但这种方式不推荐,因为它暗示了实例相关性。 4)可以访问类的静态变量和静态方法。不能直接访问实例变量和实例方法(因为实例变量和实例方法属于对象)。 5)随着类的加载而加载,随着类的卸载而消失。

典型用途: - 工具类方法,如 Math 类中的静态方法 Math.sqrt(), Math.random(). - 工厂方法,用于返回类的实例。

实例方法

1)不使用 static 关键字声明的方法。 2)属于类的实例。 3)必须通过对象来调用。 4)可以访问实例变量和实例方法。也可以访问类的静态变量和静态方法。 5)随着对象的创建而存在,随着对象的销毁而消失。

典型用途: - 操作或修改对象的实例变量。 - 执行与对象状态相关的操作。

表格总结:

特性 静态方法 实例方法
关键字 static
归属 对象
调用方式 通过类名或对象调用 通过对象调用
访问权限 只能访问静态变量和静态方法 可以访问实例变量、实例方法、静态变量和静态方法
典型用途 工具类方法、工厂方法 操作对象实例变量、与对象状态相关的操作
生命周期 类加载时存在,类卸载时消失 对象创建时存在,对象销毁时消失

扩展:注意事项

1)静态方法中不能使用 this 关键字,因为 this 代表当前对象实例,而静态方法属于类,不属于任何实例。

2)静态方法可以被重载(同类中方法名相同,但参数不同),但不能被子类重写(因为方法绑定在编译时已确定)。实例方法可以被重载,也可以被子类重写。

3)实例方法中可以直接调用静态方法和访问静态变量。 4)静态方法不具有多态性,即不支持方法的运行时动态绑定。