• static关键字


    1.静态成员变量

    * 在类中,用static声明的成员变量为静态成员变量,它是该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。
    * 静态成员可以通过类名(不需要实例化)或类的实例去访问
    * 静态成员变量,它有专属的数据区,类加载进内存的时候,静态属性也同时加载到专属的数据区
    * 静态成员变量,是唯一的,它属于类的,访问方法:类名.静态属性,所以静态成员变量称为,类变量  类属性

    2.静态方法

    * 用static声明的方法为静态方法,该方法独立于类的实例,所以也叫类方法;无static修饰的方法是实例方法
    * 静态成员方法,它有专属的方法区,类加载进内存的时候,静态方法也同时加载到专属的方法区
    * 静态成员方法,是唯一的,它属于类的,访问方法:类名.静态方法,所以静态成员方法称为,类方法
    * 静态方法中只能调用本类中其他的静态成员(变量和方法)
    * 静态方法中不能使用this和super关键字
    * 在静态方法里面无法调用非静态属性,原因:非静态属性,它属于对象,只有new 对象,给它进行赋值,这样调用时候,才具有实际意义,而,静态方法是可以通过 类名.静态方法 进行访问,即使没有new这个对象也是可以访问
    * 静态方法不可访问非静态方法,但是,反过来,非静态方法可以访问静态方法
    * 子类也可以继承父类的静态方法
    * 子类不能重写父类的静态方法

    3.静态代码块

    * 在类中可以使用不包含在任何方法中的静态代码块(static block),当类被JVM载入时,静态代码块被执行,且只被执行一次
    * 类加载后其他模块执行顺序:static代码块   -- > 非静态代码块   ---- > 构造函数
    * 静态代码块经常用来初始化类的静态成员变量
    * 静态代码块中,不能访问非静态属性,可以访问静态属性,或者静态方法

    4.其他

    * 静态方法和非静态方法里都不能定义静态变量???【解答】因为静态变量是类的变量,如果在方法中定义,就不算是类的变量了

    **简单点记忆:static声明的东东都是属于类,不属于对象,对象如果想用,必须new一个实例,静态的东东是共有财产,公家不能使用私有财产(非static的东东),但私人可以使用公家的财产;公家财产可以遗传,但是祖宗的东西不能变**

    * 使用静态static关键修饰的方法或属性或代码块都是按声明的顺序加载入内存,所以,在调用过程中一定要注意顺序。 非静态,没有这个限制

    * 接口中的抽象方法需要被重写,所以不能是static的

    * static 和 final 的区别:static定义后在可以修改(不在子类),final定义后不能修改

    5.final的作用

    1)修饰类:表示该类不能被继承

    2)修饰方法:表示方法不能被重写

    3)修饰变量:表示标量只能一次赋值以后不能被修改(常量)

  • 相关阅读:
    python爬取网页
    python异常处理
    本周总结
    改变promise状态有三种resolve、reject、throw
    详解Promise.race()可以解决多个异步请求那个请求先返回
    Promise.all()方方详解
    你不知道的Promise构造函数Promise(excutor)
    你不知道的Promise状态变化机制
    Promise练习文件读取
    关于async函数的错误处理
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5188151.html
Copyright © 2020-2023  润新知