上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.7 实例方法与类方法
在4.2.3 节大家已经对方法有了一些了解。在类中定义的方法可以分为实例方法和类方法。
4.7.1 实例方法与类方法的定义
在声明方法时,方法类型前面不使用static 修饰的是实例方法,使用static 修饰的是类方法,也称静态方法。
例如:
在Student 类中包含两个方法,其中,sum() 方法是实例方法,run() 方法是类方法,也称静态方法。在声明类方法时,需要将static 放在方法类型的前面。
4.7.2 实例方法与类方法的区别
1.对象调用实例方法
当字节码文件被分配到内存时,实例方法不会被分配入口地址,只有当该类创建对象后,类中的实例方法才会被分配入口地址,这时的实例方法才可以被类创建的对象调用。
2.使用类名调用类方法
类中定义的方法,在该类被加载到内存时,就分配了相应的入口地址。这样一来,类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。类方法的入口地址直到程序退出时才会被取消。但是需要注意,因为在类创建对象之前,实例成员变量还没有被分配内存,所以类方法不能直接操作实例变量。实例方法只能通过对象调用,而不能通过类名调用。