理解java的动态绑定 静态绑定

  1. 在java中所有变量都是静态绑定
  2. 在Java中方法只有static和final是静态绑定,其余全部是动态绑定

理解静态绑定:
静态绑定就是指在编译时就已经确定是哪个类的对象调用的。
所以当出现一下语句时:

Parent parent=new Parent();
Parent parent=null;

parent.str;

这里的str为Parent中的一个变量成员【即静态绑定】,说明当parent被定义时,即为Parent类的对象时,就将这条语句确定了
进一步讨论

Parent parent=new Parent();  或者 Parent parent=null;
Child child=new Child();
parent=child;
parent.str

这里的parent.str与先前的语句一样,因为parent定义时就说Parnet类与之后指向child无关。

动态绑定:
即程序在运行时,才会确定调用的是哪个方法,这个时候就要看你调用的这个对象的指向了。

测试源代码:

class  Parent{
	public String str="Parent";
	public void prn(){ System.out.println(str);}
	public void prn1(){ System.out.println(str);}	 
}
public class Child extends Parent{
    public String str="Child";
	public void prn1(){ System.out.println(str);}
	public static void main(String[] args) 	{
		Parent parent=new Parent();
        parent.prn1();
		parent.prn();

		System.out.println("------以下体现了动态绑定和静态绑定--");		
		Child child=new Child();
		child.prn1();
		child.prn();
		System.out.println(child.str);

        System.out.println("----以下体现了多态-----------------");
		parent=child;
		parent.prn1();
		parent.prn();
		System.out.println(parent.str);
		System.out.println();
		Parent parent1=null;
        parent1=child;
        parent1.prn1();
		parent1.prn();		
		System.out.println(parent1.str);		 
	}
}

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_40477296/article/details/83651337