parentclass=>父类
subclass=>子类1.parentclass pc=new subclass();2.subclass sc=new subclass();
  parentclass pc=new parentclass();
  pc=sc;3.subclass sc=new subclass();
  parentclass pc=sc请问这三种情况分别是什么意思?最后PC的情况是什么?第1种情况是否和第3种情况意思相同?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【duanjianbo26】截止到2008-07-24 15:22:19的历史汇总数据(不包括此帖):
    发帖的总数量:15                       发帖的总分数:460                      每贴平均分数:30                       
    回帖的总数量:36                       得分贴总数量:7                        回帖的得分率:19%                      
    结贴的总数量:12                       结贴的总分数:310                      
    无满意结贴数:6                        无满意结贴分:260                      
    未结的帖子数:3                        未结的总分数:150                      
    结贴的百分比:80.00 %               结分的百分比:67.39 %                  
    无满意结贴率:50.00 %               无满意结分率:83.87 %                  
    楼主加油
      

  2.   

    1.parentclass pc=new subclass(); 
    定义一个父类变量pc,引用一个子类实例对象
    2.subclass sc=new subclass(); 定义一个子类变量sc,引用一个子类实例对象
      parentclass pc=new parentclass(); 定义一个父类变量pc,引用一个父类实例对象
      pc=sc; 让pc变量引用改变为sc所引用的子类实例对象
    3.subclass sc=new subclass(); 定义一个子类变量sc,引用一个子类实例对象
      parentclass pc=sc;定义一个父类变量pc,引用sc所引用的子类实例对象第一种情况只有pc引用subclass的一个实例对象
    第三种情况pc和sc同时引用subclass的同一个实例对象
      

  3.   

    1.parentclass类型的引用pc指向一个字类型subclass的对象.
    2.子类型引用指向子类型的对象
    父类型引用指向父类型的对象
    赋值,pc和sc都指向子类型的对象
    3.子类型引用sc指向子类型对象
    父类型引用pc和字类型引用sc都指向子类的对象.
    第一种情况和第三种相同. 
      

  4.   

    楼上正解,
    你说的parentclass pc=new subclass();通常都是用于接口的情况比较多。
    因为接口不能实例化,
    所以要使用一个接口时,都是声明一个接口,然后实例化这个接口的实现类,这个接口引用该实例。
      

  5.   

    这些字面上的意思我也知道!但是当父类变量pc引用一个子类对象时,pc所有拥有的特点是什么呢?
    最终pc的情况:我的理解是它还是只拥有自己parentclass的属性和方法,但是它的方法可能会被覆盖!私有的方法在其子类中只是新定义了一个方法,并没有对其进行覆盖。
    class A
    {    
      int a=1;
      void m1(){
      System.out.println("A->m1");
      }
      void m2(){
         this.m1();
         }
    }
    class B extends A
    {
         void C(){
      a=3;
         }
         
         void m1(){
          System.out.println("B->m1");
         }
         
    }
    class C extends B{
     void m1(){
     System.out.println("C->m1");
     }
     void m3(){
     System.out.println("C->m3");
     }
    }
    public class echo
    {
        public static void main(String args[])
        {   
           A xx = new C();
           xx.m1();//输出C->m1,c直接覆盖了a的m1方法?
           xx.m2();//输出C->m1,说明m2中this.m1()的this是指引用c,从而知道m1方法被覆盖了?
           //xx.m3();报在A类中未定义
        }
    }
    不知道上述的理解是否正确?这三种情况最终的pc都具有相同的特点?