Need explaination : Sorry, can anyone explain me about this statement mean **Sup objRef;** .  this block code is not error and i understand how to instantiate class. but I don't why in this example they(the book owner) have write this **Sup objRef;** after instantiate class. Please explain me. I am a newbie for Java.

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

    package basic.code;

    class Sup{
    	void who(){
    		System.out.println("Who in Sup");
    	}
    }

    class Sup1 extends Sup{
    	void who(){
    		System.out.println("Who in Sup1");
    	}
    }

    class Sup2 extends Sup{
    	void who(){
    		System.out.println("Who in Sup2");
    	}
    }

    public class DynamicMethodDispatch {

    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Sup obj = new Sup();
    		Sup1 obj1 = new Sup1();
    		Sup2 obj2 = new Sup2();
    		
    		Sup objRef;
    		
    		objRef = obj;
    		objRef.who();
    		
    		objRef = obj1;
    		objRef.who();
    		
    		obj2.who();
    	}

    }

<!-- end snippet -->

