当前位置: 首页 > 后端技术 > PHP

什么时候使用静态方法?它与实例方法有何不同?

时间:2023-03-29 18:13:16 PHP

1。在加载时机和内存占用方面,静态方法和实例方法是一样的,都是在第一次使用该类型时加载。通话速度基本没有区别。2、一个方法不可能在堆或栈上分配内存。方法作为代码被加载到一个专门的代码内存区,这个内存区是不可写的。方法是否占用内存多与静态与否无关。因为字段是用来存储各个实例对象的信息的,字段会占用内存,又因为各个实例对象的状态是不一致的(至少不能认为是一致的),所以各个实例对象的所有字段都会在内存中有一个副本,正因为如此你可以通过它们来区分你当前操作的是哪个对象。但方法不同。不管有多少个实例对象,其方法的代码都是一样的,只需要一份代码即可。因此,无论是静态方法还是非静态方法,都只有一种代码,即只占用一种内存空间。为什么相同的代码在运行时表现不同?这取决于该方法使用的数据。数据的来源主要有两个,一个是通过方法的参数传入的,一个是类的成员变量的值...3.如果一个方法和它的实例对象无关class,那么应该是static的,不应该写成实例方法。所以所有的实例方法都与实例相关。既然和实例有关,那么创建实例是必然的一步,也没有什么麻烦。当然,你可以把所有的实例方法都写成静态的,只需要将实例作为参数传入即可,一般情况下可能没有问题。从面向对象的角度来看,在决定使用实例化方法还是静态方法时,应该根据该方法是否与实例化对象在逻辑上相关。如果是这样,则应使用实例化对象而不是静态方法。这只是从面向对象的角度来看。从线程安全、性能、兼容性的角度考虑,选择实例化方式也是可取的。