Mega Code Archive

 
Categories / C# / Class Interface
 

Overriding Interfaces

/* Learning C#  by Jesse Liberty Publisher: O'Reilly  ISBN: 0596003765 */  using System;  namespace OverridingInterfaces  {      interface IStorable      {          void Read();          void Write();      }      interface ITalk      {          void Talk();          void Read();      }      // Modify Document to also implement ITalk      class Document : IStorable, ITalk      {          // the document constructor          public Document(string s)          {              Console.WriteLine(                  "Creating document with: {0}", s);          }          // Implicit implementation          public virtual void Read()          {              Console.WriteLine(                  "Document Read Method for IStorable");          }          public void Write()          {              Console.WriteLine(                  "Document Write Method for IStorable");          }          // Explicit implementation          void ITalk.Read()          {              Console.WriteLine("Implementing ITalk.Read");          }          public void Talk()          {              Console.WriteLine("Implementing ITalk.Talk");          }      }     public class TesterOverridingInterfacesAs     {        [STAThread]        static void Main()        {            // Create a Document object            Document theDoc = new Document("Test Document");            IStorable isDoc = theDoc as IStorable;            if (isDoc != null)            {                isDoc.Read();            }            // Cast to an ITalk interface            ITalk itDoc = theDoc as ITalk;            if (itDoc != null)            {                itDoc.Read();            }            theDoc.Read();            theDoc.Talk();        }     }  }