/*
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();
}
}
}
Author: coder
Interface demo
/*
Learning C#
by Jesse Liberty
Publisher: O'Reilly
ISBN: 0596003765
*/
using System;
namespace InterfaceDemo
{
// define the interface
interface IStorable
{
void Read();
void Write(object obj);
int Status { get; set; }
}
// create a Document class that implements the IStorable interface
class Document : IStorable
{
public Document(string s)
{
Console.WriteLine("Creating document with: {0}", s);
}
// implement the Read method
public void Read()
{
Console.WriteLine(
"Implementing the Read Method for IStorable");
}
// implement the Write method
public void Write(object o)
{
Console.WriteLine(
"Implementing the Write Method for IStorable");
}
// implement the property
public int Status
{
get{ return status; }
set{ status = value; }
}
// store the value for the property
private int status = 0;
}
public class TesterInterfaceDemo
{
public void Run()
{
Document doc = new Document("Test Document");
doc.Status = -1;
doc.Read();
Console.WriteLine("Document Status: {0}", doc.Status);
}
[STAThread]
static void Main()
{
TesterInterfaceDemo t = new TesterInterfaceDemo();
t.Run();
}
}
}
Demonstrates the use of a simple interface
/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa
Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
// IntrFace.cs -- demonstrates the use of a simple interface
//
// Compile this program with the following command line:
// C:>csc IntrFace.cs
using System;
namespace nsInterface
{
interface IPlane
{
double Area
{
get;
}
}
interface ISolid
{
double Volume
{
get;
}
}
class clsCircle : IPlane
{
public clsCircle (double radius)
{
m_Radius = radius;
}
public double Area
{
get {return (3.14159 * m_Radius * m_Radius);}
}
private double m_Radius;
public override string ToString ()
{
return ("Area = " + Area);
}
}
class clsSphere : IPlane, ISolid
{
public clsSphere (double radius)
{
m_Radius = radius;
}
public double Area
{
get {return (4 * 3.14159 * m_Radius * m_Radius);}
}
public double Volume
{
get {return (4 * 3.14159 * m_Radius * m_Radius * m_Radius / 3);}
}
private double m_Radius;
public override string ToString ()
{
return ("Area = " + Area + ", " + "Volume = " + Volume);
}
}
public class IntrFace
{
static public void Main ()
{
clsCircle circle = new clsCircle (14.2);
clsSphere sphere = new clsSphere (16.8);
Console.WriteLine ("For the circle: " + circle);
Console.WriteLine ("For the sphere: " + sphere);
}
}
}
illustrates interface member hiding
/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example8_8.cs illustrates interface member hiding
*/
using System;
// define the IDrivable interface
public interface IDrivable
{
void TurnLeft();
}
// define the ISteerable interface (derived from IDrivable)
public interface ISteerable : IDrivable
{
new void TurnLeft(); // hides TurnLeft() in IDrivable
}
// Car class implements the IMovable interface
class Car : ISteerable
{
// explicitly implement the TurnLeft() method of the ISteerable interface
void ISteerable.TurnLeft()
{
Console.WriteLine("ISteerable implementation of TurnLeft()");
}
// implement the TurnLeft() method of the IDrivable interface
public void TurnLeft()
{
Console.WriteLine("IDrivable implementation of TurnLeft()");
}
}
public class Example8_8
{
public static void Main()
{
// create a Car object
Car myCar = new Car();
// call myCar.TurnLeft()
Console.WriteLine("Calling myCar.TurnLeft()");
myCar.TurnLeft();
// cast myCar to ISteerable
ISteerable mySteerable = myCar as ISteerable;
Console.WriteLine("Calling mySteerable.TurnLeft()");
mySteerable.TurnLeft();
// cast myCar to IDrivable
IDrivable myDrivable = myCar as IDrivable;
Console.WriteLine("Calling myDrivable.TurnLeft()");
myDrivable.TurnLeft();
}
}
illustrates an explicit interface member implementation
/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example8_7.cs illustrates an explicit interface member
implementation
*/
using System;
// define the IDrivable interface
public interface IDrivable
{
void TurnLeft();
}
// define the ISteerable interface
public interface ISteerable
{
void TurnLeft();
}
// Car class implements the IMovable interface
class Car : IDrivable, ISteerable
{
// explicitly implement the TurnLeft() method of the IDrivable interface
void IDrivable.TurnLeft()
{
Console.WriteLine("IDrivable implementation of TurnLeft()");
}
// implement the TurnLeft() method of the ISteerable interface
public void TurnLeft()
{
Console.WriteLine("ISteerable implementation of TurnLeft()");
}
}
public class Example8_7
{
public static void Main()
{
// create a Car object
Car myCar = new Car();
// call myCar.TurnLeft()
Console.WriteLine("Calling myCar.TurnLeft()");
myCar.TurnLeft();
// cast myCar to IDrivable
IDrivable myDrivable = myCar as IDrivable;
Console.WriteLine("Calling myDrivable.TurnLeft()");
myDrivable.TurnLeft();
// cast myCar to ISteerable
ISteerable mySteerable = myCar as ISteerable;
Console.WriteLine("Calling mySteerable.TurnLeft()");
mySteerable.TurnLeft();
}
}
illustrates deriving an interface from multiple interfaces
/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example8_6.cs illustrates deriving an
interface from multiple interfaces
*/
using System;
public class Example8_6
{
public static void Main()
{
// create a Car object
Car myCar = new Car();
// call myCar.Start()
Console.WriteLine("Calling myCar.Start()");
myCar.Start();
// call myCar.TurnLeft()
Console.WriteLine("Calling myCar.TurnLeft()");
myCar.TurnLeft();
// call myCar.Accelerate()
Console.WriteLine("Calling myCar.Accelerate()");
myCar.Accelerate();
}
}
// define the IDrivable interface
public interface IDrivable
{
// method declarations
void Start();
void Stop();
// property declaration
bool Started
{
get;
}
}
// define the ISteerable interface
public interface ISteerable
{
// method declarations
void TurnLeft();
void TurnRight();
}
// define the IMovable interface (derived from IDrivable and ISteerable)
public interface IMovable : IDrivable, ISteerable
{
// method declarations
void Accelerate();
void Brake();
}
// Car class implements the IMovable interface
public class Car : IMovable
{
// declare the underlying field used by the
// Started property of the IDrivable interface
private bool started = false;
// implement the Start() method of the IDrivable interface
public void Start()
{
Console.WriteLine("car started");
started = true;
}
// implement the Stop() methodof the IDrivable interface
public void Stop()
{
Console.WriteLine("car stopped");
started = false;
}
// implement the Started property of the IDrivable interface
public bool Started
{
get
{
return started;
}
}
// implement the TurnLeft() method of the ISteerable interface
public void TurnLeft()
{
Console.WriteLine("car turning left");
}
// implement the TurnRight() method of the ISteerable interface
public void TurnRight()
{
Console.WriteLine("car turning right");
}
// implement the Accelerate() method of the IMovable interface
public void Accelerate()
{
Console.WriteLine("car accelerating");
}
// implement the Brake() method of the IMovable interface
public void Brake()
{
Console.WriteLine("car braking");
}
}
illustrates deriving an interface from one interface
/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example8_5.cs illustrates deriving an
interface from one interface
*/
using System;
// define the IDrivable interface
interface IDrivable
{
// method declarations
void Start();
void Stop();
// property declaration
bool Started
{
get;
}
}
// define the IMovable interface (derived from IDrivable)
interface IMovable : IDrivable
{
// method declarations
void Accelerate();
void Brake();
}
// Car class implements the IMovable interface
class Car : IMovable
{
// declare the underlying field used by the
// Started property of the IDrivable interface
private bool started = false;
// implement the Start() method of the IDrivable interface
public void Start()
{
Console.WriteLine("car started");
started = true;
}
// implement the Stop() methodof the IDrivable interface
public void Stop()
{
Console.WriteLine("car stopped");
started = false;
}
// implement the Started property of the IDrivable interface
public bool Started
{
get
{
return started;
}
}
// implement the Accelerate() method of the IMovable interface
public void Accelerate()
{
Console.WriteLine("car accelerating");
}
// implement the Brake() method of the IMovable interface
public void Brake()
{
Console.WriteLine("car braking");
}
}
public class Example8_5
{
public static void Main()
{
// create a Car object
Car myCar = new Car();
// call myCar.Start()
Console.WriteLine("Calling myCar.Start()");
myCar.Start();
// call myCar.Accelerate()
Console.WriteLine("Calling myCar.Accelerate()");
myCar.Accelerate();
}
}