• 类方法和实例方法-简记


    概念:类方法:用static修饰,也叫静态方法。实例方法:不用static修饰,也叫非静态方法。
    两者的区别:
      1)类方法:当类的字节码文件加载到内存,类方法的入口地址就会分配完成,所以类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用,类方法的入口地址只有程序退出时消失。
      2)实例方法:当类的字节码文件加载到内存中时,类的实例方法并没有被分配入口地址,只有当该类的对象创建以后,实例方法才分配了入口地址。从而实例方法可以被类创建的所有对象调用。还有一点需要注意,当我们创建第一个类的对象时,实例方法的入口地址会完成分配,当后续在创建对象时,不会再分配新的入口地址,也可以说,该类的所有对象共享实例方法的入口地址,当该类的所有对象被销毁,入口地址才会消失。

    备注:因为类方法的入口地址的分配要早于实例方法的入口地址分配时间,所以在定义类方法和实例方法是有以下规则需要遵循:

      a、在类方法中不能引用实例变量、实例方法:实例变量的定义类似于实例方法,没有用static修饰的变量,实例变量的创建与实例方法的创建相同,也是在类的对象创建时完成,所以在类方法中是不能引用实例变量的,因为这个时候实例变量没有分配内存地址。
      b、在类方法中不能使用super和this关键字:这是因为super和this都是指向父类和本类的对象,而在类方法中调用的时候,这些指代的对象可能都还没有创建。
      c、相反:实例方法可以引用类变量,实例变量、可以使用super和this关键字、可以调用类方法。
      d、类方法中可以直接调用本类的类方法,但同时也可以使用[类名.类方法名]来调用其他类的类方法。类方法只能调用其他类方法,不能调用实例方法。

  • 相关阅读:
    BZOJ 4278: [ONTAK2015]Tasowanie 后缀数组 + 贪心 + 细节
    BZOJ 1692: [Usaco2007 Dec]队列变换 后缀数组 + 贪心
    luogu P2852 [USACO06DEC]牛奶模式Milk Patterns 后缀数组 + Height数组 + 二分答案 + 扫描
    BZOJ2251 [2010Beijing Wc]外星联络 后缀数组 + Height数组
    [NOI2015]软件包管理器 树链剖分 + 线段树
    BZOJ [POI2004]PRZ 状压DP + 二进制 + 骚操作
    GIL与异步回调
    Event事件
    进程池与线程池
    队列
  • 原文地址:https://www.cnblogs.com/yangrongkuan/p/12028033.html
Copyright © 2020-2023  润新知