public static void Main(string[] args)
        {
            Frutas manza = new Manzanas("Apple", 1.7, "roja"); // como manzanas es una clase de Frutas , todobien no  pasa nada
            // Frutas pepino = new Vegetales();  // no se puede hacer, vegetales no tiene nada que ver con frutas, estan al mismo nivel
            Object esta = new Peras();
            // Manzanas miratu = (Manzanas)esta; // no se puede pasar una pera a ser manzana asi sean iguales y hermanas
            // Peras miratu = (Peras)esta; este sirve pero tambien se puede usar as para castear
            Peras     miratu = esta as Peras;
            Vegetales veggie = new Vegetales();

            Console.WriteLine("mi objeto es una {0}", manza.Kind);
            veggie.Nombre = "tomate";
            Console.WriteLine("mi objeto es un {0}", veggie.getNombre());
            Console.WriteLine("mi objeto {0} es de tipo {1}", manza.Kind, manza.GetType());
            // CASTENADO
            if (manza is Object)
            {
                Console.WriteLine("manza es un hijo remoto de Object, todos son hijos de Object que ejemplo tan malo");
            }
            if (esta is Vegetales)
            {
                Console.WriteLine("esta es un hijo de vegetales asi sea declarado como Object");
            }
            if (miratu is Vegetales)
            {
                Console.WriteLine("mi objeto copiado de vegetales necesita que esta tenga un casteo externo a Vegetales para poder funcionar");
            }
        }
        public static void Main(string[] args)
        {
            Manzanas Man1  = new Manzanas("manzana Royal", 0.50, "red");
            Peras    Pera1 = new Peras("Pera Chilena", 0.9, "green");

            Console.WriteLine("mi pera vale {0} y es de color {1}", Pera1.Cost, Pera1.Color);
        }