コード例 #1
0
        static void Main(string[] args)
        {
            //Instanciamos un objeto de la clase DemoB.
            var demo = new DemoB();

            demo.Nombre    = "Aitor";
            demo.Apellidos = "Cerdán";
            demo.Edad      = 13;

            //demo.PintaDatos();
            demo.PintaDatosHijo();
            demo.PintaDatosPadre();


            //Compatibilidad: La compatibilidad es con la BASE. Los derivados entre si son incompatibles.
            DemoB b  = new DemoB();
            DemoA a  = new DemoA(); //Las variables tienen que contener objetos iguales.
            DemoA a2 = new DemoB(); //Las clases base son compatibles con las clases derivadas.
            //DemoB b2 = new DemoA(); //Clase derivada contiene clase base. NO
            //DemoC c = new DemoA(); //Clases no heredadas. NO
            //Sucede igual con el uso de interfaces:
            Lavadora          lavadora  = new Lavadora();
            IElectrodomestico Ilavadora = new Lavadora(); //Una variable de una interfaz puede contener cualquier objeto de sus clases derivadas.
            Nevera            nevera    = new Nevera();   //Estos objetos tienen acceso a toda la funcionalidad de la clase Nevera.
            IElectrodomestico Inevera   = new Nevera();   //Estos objetos solo tendran acceso a los miembros mínimos que define la interfaz.

            Ilavadora = lavadora;
            Ilavadora = nevera;                                //Una variale de tipo interfaz puede contener cualquier objeto que derive de su misma interfaz.
            Ilavadora = Inevera;                               //Inevera es un objeto interfaz.
            Inevera   = lavadora;                              //etc. Inevera e Ilavadora son la misma interfaz.
            //Tipos:
            Console.WriteLine(lavadora.GetType().ToString());  //Objeto.
            Console.WriteLine(Ilavadora.GetType().ToString()); //Interfaz. A través de una conversión podemos acceder a los métodos del objeto.
            //Colecciones:
            IEnumerable <int> numeros = new List <int>();      //Interfaz IEnumerable que comparten todas las colecciones en .NET. Solo tenemos acceso a la funcionalidad mínima.
        }