/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example8_3.cs illustrates inheriting from a class and
implementing multiple interfaces
*/
using System;
interface IDrivable
{
// method declarations
void Start();
void Stop();
// property declaration
bool Started
{
get;
}
}
interface ISteerable
{
// method declarations
void TurnLeft();
void TurnRight();
}
class MotorVehicle
{
// declare the field
private string model;
// define a constructor
public MotorVehicle(string model)
{
this.model = model;
}
// declare a property
public string Model
{
get
{
return model;
}
set
{
model = value;
}
}
}
// Car class inherits from the MotorVehicle class and
// implements the IDrivable and ISteerable interfaces
class Car : MotorVehicle, IDrivable, ISteerable
{
// declare the underlying field used by the
// Started property of the IDrivable interface
private bool started = false;
// define a constructor
public Car(string model) :
base(model) // calls the base class constructor
{
// do nothing
}
// 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");
}
}
public class Example8_3
{
public static void Main()
{
// create a Car object
Car myCar = new Car("MR2");
Console.WriteLine("myCar.Model = " + myCar.Model);
// call myCar.Start()
Console.WriteLine("Calling myCar.Start()");
myCar.Start();
// call myCar.TurnLeft()
Console.WriteLine("Calling myCar.TurnLeft()");
myCar.TurnLeft();
}
}
|