Parent p2 = new Child();
即:
Child c1 = new Child();  //新建Child对象,并把此对象的引用赋给c1
Parent p2 = (Parent)c1;  //把c1"窄化"赋给p2,p2、c1都引用同一个对象(Child)

解决方案 »

  1.   

    Parent p2 = new Child();  是上朔造型(Upcasting),创建衍生类的一个对象时候,其中包括了基本类的一个对象。衍生类属于基本类的一种类型。
      

  2.   

    这个程序编译不过,应该把Child类中的method方法的访问标示符改为public, 这样就ok了。
    你说的问题是多态,这是面向对象的基本,建议你还是先看看书吧,你是不是刚学编程啊!!
      

  3.   

    你这么说也可以,他是声明了Parent 类(子类)实例,但用Child(这个父类)来对其实例化,也就说,P2的Parent子类新添的方法(通俗的说是各种新加的东西)将不能使用,只能使用父类共有的方法和成员。
    而上一句则可以使用Parent子类的各项内容。因为他(新加的内容)声明使用了。
    JAVA里的类使用时,要用NEW方法分配内存的。
      

  4.   

    Child是Parent的子类,具有Parent的一切特性,因此,Child可以当做Parent看待,但当Child用做Parent时,不能使用扩展的方法。
    实际上,Parent p2 = new Child();一句相当于
    Child c = new Child();
    Parent p2 = (Parent)c;
      

  5.   

    是多态和上溯造型的问题。最好还是先看看Java基础,推荐《Java2 核心技术 卷I 基础知识》。