第二十四天
学会了动态绑定和static关键字
明天学习final关键字
一、动态绑定
Java调用一个类方法时,它会基于对象引用的类型(通常在编译时可知)来选择所调用的方法。
相反,当虚拟机调用一个实例方法时,它会基于对象实际的类型(只能在运行时得知)来选择所调用的方法,这就是动态绑定,是多态的一种。
动态绑定为解决实际的业务问题提供了很大的灵活性,是一种非常优美的机制。
动态绑定具体表现在向上转型上,因为只有在运行时才知道具体运行的是哪个实例。
二、静态绑定
静态绑定就是在程序编译时就绑定的,在Java中的变量都是静态绑定的,只有private、static和final是静态绑定的。
三、static关键字
1、静态变量
静态变量只需要在变量前加上 static关键字即可,静态变量不需要通过对象来访问,直接使用“类名.变量名”直接访问,并且该变量不属于具体的哪一对象。
public class VarDemo { public static int x=1; public static void main() { VarDemo.x++; VarDemo v=new VarDemo(); v.x++; System.out.println("x="+x); } }
2、静态方法
public class VarDemo { public static void main(String[] args) { VarDemo.test(); test(); } public static void test() { System.out.println("test..."); } }
5.3.3静态代码块
static代码块也叫静态代码块,可以有多个,并且位置可以随便放,它不在任何方法体内,JVM加载类时会执行这些静态的代码块,
static代码块会优先于构造器执行,如果static代码块有多个,JVM将按照他们在类中
出现的先后顺序,每个代码块只会被执行一次。
public class VarDemo { static { System.out.println("静态代码块1"); } static { System.out.println("静态代码块2"); } public VarDemo() { System.out.println("构造方法"); } public static void main(String[] args) { VarDemo d=new VarDemo(); VarDemo d2=new VarDemo(); } }