/*
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();
}
}
}
|