public class Animal
{
........
}
 
  public class cat:Animal
{
.........
}Animal theAnimal=new Animal();
Animal theAnimal=new cat();
cat theAnimal=new cat();
请求详细讲解一下这三个theAnimal对象有什么差别,他们各自代表了些什么内容?谢谢!
更希望能够讲解一下内存里实际存储。

解决方案 »

  1.   

    Animal theAnimal=new Animal(); 
    cat theAnimal=new cat(); 
    显然这两个都是实例化一个各自的类。
    Animal theAnimal=new cat(); 
    是实例化一个cat的对象,并将他的引用赋值给animal类型的引用,这就相当于对这个cat的对象进行了强制换换(子类转父类是可以的)
      

  2.   

    第一个第二个theAnimal都是父类的引用类型,第三个theAnimal是子类引用类型
      

  3.   

    第一个第二个theAnimal都是父类的引用类型,第三个theAnimal是子类引用类型
      

  4.   

    Animal theAnimal=new cat(); 
    cat theAnimal=new cat(); 
    显然这是同一个类型的实例,只是赋值给了不同的类型变量,因为Animal未cat得父类,所以可以直接赋值,而不用强转而
    Animal theAnimal=new Animal(); 
    是是Animal对象实例
      

  5.   

    new 出什么是什么
    你可能持基类模板而装子类的内容
      

  6.   

    public class Animal
    {
    public string word="";
    public virtual void Introduce()
    {
    word="I'm a Animal";
    }
    }
    public class cat:Animal
    {public new  void Introduce()
    {
    word="I'm a cat";
    }
    }Animal theAnimal=new cat();
    theAnimal.Introduce();
    MessageBox.show(theAnimal.word);
    结果为I'm a Animal
    而cat theAnimal=new cat();结果为I'm a cat
    new关键字不是用来区别派生类和基类同名方法选择问题,来隐藏基类方法吗?为什么第一个的结果还为I'm a Animal