第二十四天

学会了动态绑定和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();
    }
}

 

posted @ 2020-07-29 22:18  yasai  阅读(78)  评论(0编辑  收藏  举报