关于下面程序,哪些选项的结论是正确的? 
class J_Animal{  
   public abstract void mb_index();  

class J_Dog extends J_Animal{  
    public void mb_index(){    System.out.println("1"); } 

class J_Cat extends J_Animal{ 
    public void mb_index(){    System.out.println("2"); } 

public class J_Test{  
    public static void main(String args[]){   
         J_Animal d=new J_Dog();   
         d.mb_index();   
         d=new J_Cat();  
         d.mb_index();  
    } 
}
A 程序可以通过编译并正常运行,结果输出“12”
B 程序可以通过编译并正常运行,结果输出“11”
C 程序无法通过编译,因为类型转换不合法
D 程序无法通过编译,因为类J_Animal的定义不对