共计 1020 个字符,预计需要花费 3 分钟才能阅读完成。
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 学习材料,如有须要扫描二维码支付!