interface IStorable
   {
      void Read( );
      void Write( );
   }   public class Document : IStorable
   {
    .........
    public void Write( )
      {
         Console.WriteLine(
            "Document Write Method for IStorable" );
      }
   }   public class Note : Document
   {
    .........
    public new void Write( )
      {
         Console.WriteLine(
            "Implementing the Write method for Note!" );
      }
   }
   public class Tester
   {      static void Main( )
      {
         // create a document reference to a Note object
         Document theNote = new Note( "Test Note" );
这里Note类中的write方法,用了new以后是不是就算是一个全新的方法,和原来的IStorable接口没有关系,只能算是Note类的方法呢?Document theNote = new Note( "Test Note" );里面,theNote是Document的一个引用变量,它指向一个Note的对象,Note对象没有具体的名字,还只是一个内存中的地址,可以把theNote看作同时是Document和Note的对象吗,就像一个手里抓着两个气球?

解决方案 »

  1.   

    用了new后表示将父类的方法覆盖掉了,如果没有用new会有warning
    theNote是多态性的使用,不能说是一手抓着两个气球,theNote只能说是指向了Note对象
      

  2.   

    new 是重写父类的方法
    你这个地方  关系就是 父类实现了 接口,Note 又重写了这个方法
      

  3.   

    Document theNote = new Note( "Test Note" );
    在栈创建 Document 的变量 指向 堆上创建的 Note对象空间
    这个变量可以指向 多个这样的 Documnet或Note 对象空间
      

  4.   

    那么这个重写的write方法是不是只有在Note对象调用方法的时候才使用呢,当Document对象调用write方法的时候用的应该还是原先的那个write方法吧.