static作用:
1、static润饰办法
static办法个别称作静态方法,因为静态方法不依赖于任何对象就能够进行拜访,因而对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。
并且因为这个个性,在静态方法中不能拜访类的非动态成员变量和非动态成员办法,因为非动态成员办法/变量都是必须依赖具体的对象才可能被调用。
然而要留神的是,尽管在静态方法中不能拜访非动态成员办法和非动态成员变量,然而在非动态成员办法中是能够拜访动态成员办法/变量的。
2、static润饰变量
static变量也称作动态变量,动态变量和非动态变量的区别是:动态变量被所有的对象所共享,在内存中只有一个正本,它当且仅当在类首次加载时会被初始化。
而非动态变量是对象所领有的,在创建对象的时候被初始化,存在多个正本,各个对象领有的正本互不影响。static成员变量的初始化程序依照定义的程序进行初始化。
3、static润饰代码块
static关键字还有一个比拟要害的作用就是 用来造成动态代码块以优化程序性能。static块能够置于类中的任何中央,类中能够有多个static块。
在类首次被加载的时候,会依照static块的程序来执行每个static块,并且只会执行一次。为什么说static块能够用来优化程序性能,是因为它的个性:只会在类加载的时候执行一次。
Java中是否能够笼罩一个private或者是static的办法?
如果一个类的变量或者办法后面有static润饰,那么表明这个办法或者变量属于这个类,也就是说能够在不创建对象的状况下间接应用
当父类的办法被private润饰时,表明该办法为父类公有,对其余任何类都是不可见的,因而如果子类定了一个与父类一样的办法,这对于子类来说相当于是一个新的公有办法,且如果要进行向上转型,而后去调用该“笼罩办法”,会产生编译谬误
class Parent { private fun() { ... } }class Child extends Parent { private fun() { ... }}class Test { public static void main(String[] args) { Parent c = new Child(); c.fun(); //编译出错 }}
static办法时编译时动态绑定的,属于类,而笼罩是运行时动静绑定的(动静绑定的多态),因而不能笼罩.
阐明
最初我整顿了一份Java学习材料,如有须要扫描二维码支付!