向上转型,有什么用咧.??什么时候用得向上转型,就是说,什么时候需要A a= new B();这样产生引用对象啊?/

解决方案 »

  1.   

    前提是
    Class B extends A{}
      

  2.   

    典型的多态,
    class A
    {
      public void print(){}
    }
    class B extends A{
      public void print(){}
    }
    class C extends A{
      public void print(){}
    }class Test
    {
      public void testa(A a)
     {
       a.print();
     }
      public static void main(String[] args)
      {
         A a = new B();
         A a1 = new C();
         Test t = new Test();
         t.testa(a);//调用B中的public void print(){}
         t.testa(a1);//调用C中的public void print(){}
       }
    }
      

  3.   

    其实楼上的朋友把这个问题复杂化了。
    简单的说
    A a = new A();
    第一个A是一个类型
    a是一个对象的名字(就像指针一样,在Thinking in Java中它还有一个名字叫:Ref)
    new A();是一个构造函数。
    同样的理解
    A a = new B();
    要把
    B的构造结果返回给A类型
    说明要么他们是同一个对象
    或者是父子关系。

    A a = new B();
    我们通常用在向上转型的时候