En herencia múltiple, una clase puede tener más de una superclase y heredar características de todas sus clases principales. Como se muestra en el siguiente diagrama, la clase C hereda las características de las clases A y B.
Pero C# no admite la herencia de clases múltiples. Para superar este problema, usamos interfaces para lograr la herencia de múltiples clases. Con la ayuda de la interfaz , la clase C (como se muestra en el diagrama anterior) puede obtener las características de las clases A y B.
Ejemplo 1: en primer lugar, tratamos de heredar las características de las clases Geeks1 y Geeks2 en la clase GeeksforGeeks, luego el compilador dará un error porque C# directamente no admite la herencia de clases múltiples.
// C# program to illustrate // multiple class inheritance using System; using System.Collections; // Parent class 1 class Geeks1 { // Providing the implementation // of languages() method public void languages() { // Creating ArrayList ArrayList My_list = new ArrayList(); // Adding elements in the // My_list ArrayList My_list.Add("C"); My_list.Add("C++"); My_list.Add("C#"); My_list.Add("Java"); Console.WriteLine("Languages provided by GeeksforGeeks:"); foreach(var elements in My_list) { Console.WriteLine(elements); } } } // Parent class 2 class Geeks2 { // Providing the implementation // of courses() method public void courses() { // Creating ArrayList ArrayList My_list = new ArrayList(); // Adding elements in the // My_list ArrayList My_list.Add("System Design"); My_list.Add("Fork Python"); My_list.Add("Geeks Classes DSA"); My_list.Add("Fork Java"); Console.WriteLine("\nCourses provided by GeeksforGeeks:"); foreach(var elements in My_list) { Console.WriteLine(elements); } } } // Child class class GeeksforGeeks : Geeks1, Geeks2 { } public class GFG { // Main method static public void Main() { // Creating object of GeeksforGeeks class GeeksforGeeks obj = new GeeksforGeeks(); obj.languages(); obj.courses(); } }
Error de tiempo de ejecución:
prog.cs(61, 30): error CS1721: `GeeksforGeeks’: las clases no pueden tener varias clases base (`Geeks1′ y `Geeks2′)
prog.cs(35, 7): (Ubicación del símbolo relacionado con el error anterior)
Pero podemos heredar indirectamente las características de las clases Geeks1 y Geek2 en la clase GeeksforGeeks usando interfaces. Como se muestra en el siguiente diagrama.
Ejemplo 2: las interfaces GFG1 y GFG2 están implementadas por las clases Geeks1 y Geeks2. Ahora las clases Geeks1 y Geeks2 definen el método languages() y los cursos(). Cuando una clase GeeksforGeeks hereda las interfaces GFG1 y GFG2, no es necesario redefinir los métodos de idiomas() y cursos() , simplemente cree los objetos de la clase Geeks1 y Geeks2 y acceda al método de idiomas() y cursos() utilizando estos objetos en la clase GeeksforGeeks.
// C# program to illustrate how to // implement multiple class inheritance // using interfaces using System; using System.Collections; // Interface 1 interface GFG1 { void languages(); } // Parent class 1 class Geeks1 : GFG1 { // Providing the implementation // of languages() method public void languages() { // Creating ArrayList ArrayList My_list = new ArrayList(); // Adding elements in the // My_list ArrayList My_list.Add("C"); My_list.Add("C++"); My_list.Add("C#"); My_list.Add("Java"); Console.WriteLine("Languages provided by GeeksforGeeks:"); foreach(var elements in My_list) { Console.WriteLine(elements); } } } // Interface 2 interface GFG2 { void courses(); } // Parent class 2 class Geeks2 : GFG2 { // Providing the implementation // of courses() method public void courses() { // Creating ArrayList ArrayList My_list = new ArrayList(); // Adding elements in the // My_list ArrayList My_list.Add("System Design"); My_list.Add("Fork Python"); My_list.Add("Geeks Classes DSA"); My_list.Add("Fork Java"); Console.WriteLine("\nCourses provided by GeeksforGeeks:"); foreach(var elements in My_list) { Console.WriteLine(elements); } } } // Child class class GeeksforGeeks : GFG1, GFG2 { // Creating objects of Geeks1 and Geeks2 class Geeks1 obj1 = new Geeks1(); Geeks2 obj2 = new Geeks2(); public void languages() { obj1.languages(); } public void courses() { obj2.courses(); } } // Driver Class public class GFG { // Main method static public void Main() { // Creating object of GeeksforGeeks class GeeksforGeeks obj = new GeeksforGeeks(); obj.languages(); obj.courses(); } }
Producción:
Languages provided by GeeksforGeeks: C C++ C# Java Courses provided by GeeksforGeeks: System Design Fork Python Geeks Classes DSA Fork Java
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA