Class Interface C#

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
  Example7_3.cs illustrates member accessibility
*/
using System;
// declare the MotorVehicle class
class MotorVehicle
{
  // declare the fields
  private   string make;
  protected string model;
  // define a constructor
  public MotorVehicle(string make, string model)
  {
    this.make = make;
    this.model = model;
  }
  // define the Start() method (may be overridden in a
  // derived class)
  public virtual void Start()
  {
    TurnStarterMotor();
    System.Console.WriteLine("Vehicle started");
  }
  // define the TurnStarterMotor() method
  private void TurnStarterMotor()
  {
    System.Console.WriteLine("Turning starter motor...");
  }
}
// declare the Car class (derived from MotorVehicle)
class Car : MotorVehicle
{
  // define a constructor
  public Car(string make, string model) :
  base(make, model)
  {
    // do nothing
  }
  // override the base class Start() method
  public override void Start()
  {
    Console.WriteLine("Starting " + model);  // model accessible
    base.Start();  // calls the Start() method in the base class
    // Console.WriteLine("make = " + make);  // make is not accessible
  }
}
public class Example7_3
{
  public static void Main()
  {
    // create a Car object and call the object's Accelerate() method
    Car myCar = new Car("Toyota", "MR2");
    myCar.Start();
    // make and model are not accessible, so the following two lines
    // are commented out
    // Console.WriteLine("myCar.make = " + myCar.make);
    // Console.WriteLine("myCar.model = " + myCar.model);
  }
}