static void Main()
    {
        CProducto p1 = new CProductoImportado("tele", 1000, 100);

        p1.CalcularPrecio();
        Console.WriteLine(p1);

        //Para usar metodos propios de CProductoImportado que no corresponden a la cadena de herencia podemos hacer
        //TypeCast
        ((CProductoImportado)p1).MostrarMensaje();
    }
    static void Main()
    {
        CProduct uno = new CProduct("producto 1", 10);

        uno.CalculaPrecioVenta();
        Console.WriteLine(uno);

        Console.WriteLine();

        CProductoImportado dos = new CProductoImportado("producto 2", 10, 2);

        dos.CalculaPrecioVenta();
        Console.WriteLine(dos);

        Console.WriteLine();

        CProductoDetenido tres = new CProductoDetenido("producto 3", 10, 2, 2);

        tres.CalculaPrecioVenta();
        Console.WriteLine(tres);
    }
    static void Main()
    {
        CProducto p1 = new CProducto("producto 1", 1000);

        p1.CalcularPrecio();
        p1.MostrarProducto();

        Console.WriteLine();

        CProductoImportado p2 = new CProductoImportado("producto 2", 1000, 100);

        p2.CalcularPrecio();
        p2.MostrarProducto();

        Console.WriteLine();

        //Al hacer la varible polimorfica el uso de new en metodos ya no funciona
        //Evitar usar new en metodos si vamos a usar variables polimorficas.
        CProducto p3 = new CProductoImportado("producto 3", 1000, 100);

        p3.CalcularPrecio();
        p3.MostrarProducto();
    }