在Java中使用静态方法和实例方法的方式有何不同.

zig*_*ggy 0 java

在读书的时候,我发现了这句话:


对象的方法定义其行为.这些方法称为实例方法.重要的是要注意这些方法属于该类的每个对象.这不应该与该类的所有实例共享的方法的实现相混淆.


我知道什么是实例方法,我知道什么是静态方法(即由类的所有实例共享).上述陈述似乎表明所有实例都共享方法的实现.这到底是什么意思?它听起来不像是指静态方法.

Jon*_*eet 8

这意味着您不会在每个类的实例旁边获得代码本身的额外副本.该行为与类的实例相关联,因此它具有该上下文,但是对于实例方法而言,在内存等方面没有额外的"每个实例"价格.

需要注意的一点static:我不喜欢它的描述"被所有类的实例共享",因为这表明如果没有任何实例,它就无法使用.我更喜欢说它与类本身相关联,而不是类的特定实例.