public interface Comparable{
           public void comparableTo();
     }
     public class Cat impletements Comparable{
           public void comparableTo(){
                System.out.println("对比");
          }
     }
     public class Test{
          public static void main(String[] args){
              Comparable compare = new Cat();//1、父类引用指向子类对象
              compare.comparableTo();//1、父类引用指向子类对象
              //**************************************//
              Cat cat = new Cat();//
              Comparable compare = (Comparable)cat;//2、这里也是父类引用指向子类对象吗??
              compare.comparableTo();//2、我感觉这怎么好像是接口的对象在调用子类的方法啊??
              //**********上面例子的2、该怎么解释啊?请求指点*******//
            
         }     }

解决方案 »

  1.   

     Comparable compare = (Comparable)cat;//2、这里也是父类引用指向子类对象吗??
    这里是向上转型 , 你也可以这么理解
     compare.comparableTo();//2、我感觉这怎么好像是接口的对象在调用子类的方法啊??
    这里这个对象本身原来就是cat,是compare指向的这个对象的地址,调用的方法当然也是cat的。
      

  2.   

    Comparable compare = (Comparable)cat;
    应该等同于Comparable compare = cat;吧,自动向上转型。
      

  3.   

    上面的1,2其实是一样的(转换),不好解释,只能理解,最后只能问java设计者了。
      

  4.   

    Comparable compare = (Comparable)cat这个应该是向下转型吧
      

  5.   

    LZ要搞先清楚JAVA类和接口的区别,再来提问把。