类方法即静态方法,用static修饰;实例方法即非静态方法,没有static修饰。
类方法
1、在类方法中不能引用实例变量。
实例变量即没有用static修饰的变量,实例变量的创建在类的对象创建时完成,所以在类方法中是不能引用实例变量的,因为这个时候实例变量还没有分配内存地址。
2、类方法中不能调用实例方法。
原因同上。 在类方法中可以通过创建实例对象调用类的实例方法。
3、 在类方法中不能使用super和this关键字。
因为super和this都指向父类和本类的对象,而在类方法中调用的时候,这些指代的对象有可能都还没有创建。
4、类方法不能被重写。
实例方法(对象方法)
1、实例方法中可以引用实例变量和类变量
2、实例方法中可以调用类方法
3、实例方法中可以有this、super
区别:
1、类方法可以被该类的对象调用,也可以直接通过类名完成调用;实例方法只能被类创建的所有对象调用。
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址。当该类创建对象后,类中的实例方法才分配入口地址, 从而实例方法可以被类创建的任何对象调用执行。
当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址。也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。
网友评论