牛骨文教育服务平台(让学习变的简单)

这一节我们来看一下在我们开发的过程中,在什么时候我们要用到static关键字进行静态修饰。

我们这里所说的静态,无非就是两种,一种是静态变量,一种是静态函数,我们分这两种情况进行说明static关键字的使用场合。

一、静态变量

我们在7.8节中对static关键字特点和7.9节中成员变量与静态变量区别进行学习的时候就已经很明确的指出了静态变量是共享数据,而对象中封装的特有数据。

因此我们可以这样解释:当分析对象中所具备成员变量的值是相同的,且不需要对象做修改,这时这个成员变量就可以被static关键字修饰为静态。

从另一个角度也就是说,只要数据在对象中都是不同的,也就是对象的特有数据,必须存在在对象中,则就是非静态的,不能被static关键字修饰为静态。

因此用static关键字定义静态变量的使用场合:如果是相同数据,且对象不需要做修改,只需要使用,且不需要存储在对象中,则使用static关键字定义成静态。

二、静态函数

我们在7.10static关键字使用细节时说到了静态方法中不能调用非静态成员,且不能使用this关键字,所以对于函数是否使用static关键字修饰,只需要参考一点,就是该函数功能是否有访问到对象中的特有数据。

为了帮助我们理解,我们可以通俗的说,从源码看,该功能是否需要访问非静态成员变量,如果需要,该功能就是非静态的,如果不需要,我们就可以将该功能用static关键字定义成静态函数。

当然,我们也可以定义成非静态,但是非静态需要对象去调用,而当创建了对象却没有访问特有数据的方法,该对象创建是没有意义的。因为我们之前说过对象是用于封装特有数据的,当我们没有访问特有数据,那么我们为什么要创建对象呢?创建的对象只是浪费了堆内存中的空间,再什么也没有做,所以说此时创建对象是没有意义的。

因此用static关键字定义静态函数的使用场合:如果一个函数不需要访问非静态成员变量,就可以用static关键字定义成静态。


这一节我们就简单的说这些吧。