// Vehiculo.cs
// version 1.0
// fecha: 7-Enero-2003
// Juan Manuel Cueva Lovelle
// Ejemplo de Polimorfismo

using System;
using System.Collections; //Para usar ArrayList

namespace Polimorfismo
{
    /// <summary>
    /// Clase padre de la jerarquía de herencia
    /// </summary>
    class Vehiculo
    {
        public virtual void anda()
        {
            Console.WriteLine("andando");
        }
    }
    class Coche:Vehiculo
    {
        public override void anda()
        {
            Console.WriteLine("acelerando");
        }
    }
    class Bicicleta:Vehiculo
    {
        public override void anda()
        {
            Console.WriteLine("pedaleando");
        }

        /// <summary>
        /// Punto de entrada principal de la aplicación.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            ArrayList contenedor = new ArrayList();

            contenedor.Add(new Vehiculo());
            contenedor.Add(new Coche());
            contenedor.Add(new Bicicleta());
            contenedor.Add(new Vehiculo());
            contenedor.Add(new Coche());
            contenedor.Add(new Bicicleta());


            foreach (Vehiculo v in contenedor)
                v.anda();

            //Espera que se pulse una tecla
            Console.ReadLine();

        }
    }
}