/* Learning C# by Jesse Liberty Publisher: O'Reilly ISBN: 0596003765 */ using System; namespace InterfaceDemo { interface IStorable { void Read(); void Write(object obj); int Status { get; set; } } // here's the new interface interface ICompressible { void Compress(); void Decompress(); } // Document implements both interfaces class Document : IStorable, ICompressible { // the document constructor public Document(string s) { Console.WriteLine("Creating document with: {0}", s); } // implement IStorable public void Read() { Console.WriteLine( "Implementing the Read Method for IStorable"); } public void Write(object o) { Console.WriteLine( "Implementing the Write Method for IStorable"); } public int Status { get { return status; } set { status = value; } } // implement ICompressible public void Compress() { Console.WriteLine("Implementing Compress"); } public void Decompress() { Console.WriteLine("Implementing Decompress"); } // hold the data for IStorable's Status property private int status = 0; } public class TesterInterfaceDemo2 { public void Run() { Document doc = new Document("Test Document"); doc.Status = -1; doc.Read(); doc.Compress(); Console.WriteLine("Document Status: {0}", doc.Status); } [STAThread] static void Main() { TesterInterfaceDemo2 t = new TesterInterfaceDemo2(); t.Run(); } } }