Code:
public class MyClass{
  public static void main(String[] args){
    MyClass a;
    MySubclass b; 
 
    a = new MyClass(); 
    b = new MySubclass(); 
 
    a = b; 
    b = a; // fails 
    
    a = new MySubclass(); 
    b = new MyClass(); 
  }
 }

 class MySubclass extends MyClass{}
Im wondering why the line marked // fails causes the program not to compile. b = a now a can reference MySubclass. b = a MySubclass back into
MySubClass reference.