En la herencia multinivel , una clase derivada heredará una clase base y, al igual que la clase derivada, también actuará como clase base para otra clase. Por ejemplo, tres clases denominadas A, B y C, como se muestra en la siguiente imagen, donde la clase C se deriva de la clase B y la clase B se deriva de la clase A. En esta situación, cada clase derivada hereda todas las características de sus clases base. Entonces, la clase C hereda todas las características de las clases A y B.
Ejemplo: Aquí, la clase derivada Rectangle se usa como clase base para crear la clase derivada llamada ColorRectangle. Debido a la herencia, ColorRectangle hereda todas las características de Rectangle y Shape y agrega un campo adicional llamado rcolor, que contiene el color del rectángulo.
Este ejemplo también cubre el concepto de constructores en una clase derivada. Como sabemos, una subclase hereda todos los miembros (campos, métodos) de su superclase, pero los constructores no son miembros, por lo que las subclases no los heredan, pero el constructor de la superclase puede invocarse desde la subclase. Como se muestra en el siguiente ejemplo, base se refiere a un constructor en la clase base más cercana. La base en ColorRectangle llama al constructor en Rectangle y la base en la clase Rectangle al constructor en Shape.
// C# program to illustrate the // concept of multilevel inheritance using System; class Shape { double a_width; double a_length; // Default constructor public Shape() { Width = Length = 0.0; } // Constructor for Shape public Shape(double w, double l) { Width = w; Length = l; } // Construct an object with // equal length and width public Shape(double y) { Width = Length = y; } // Properties for Length and Width public double Width { get { return a_width; } set { a_width = value < 0 ? -value : value; } } public double Length { get { return a_length; } set { a_length = value < 0 ? -value : value; } } public void DisplayDim() { Console.WriteLine("Width and Length are " + Width + " and " + Length); } } // A derived class of Shape // for the rectangle. class Rectangle : Shape { string Style; // A default constructor. // This invokes the default // constructor of Shape. public Rectangle() { Style = "null"; } // Constructor public Rectangle(string s, double w, double l) : base(w, l) { Style = s; } // Construct an square. public Rectangle(double y) : base(y) { Style = "square"; } // Return area of rectangle. public double Area() { return Width * Length; } // Display a rectangle's style. public void DisplayStyle() { Console.WriteLine("Rectangle is " + Style); } } // Inheriting Rectangle class class ColorRectangle : Rectangle { string rcolor; // Constructor public ColorRectangle(string c, string s, double w, double l) : base(s, w, l) { rcolor = c; } // Display the color. public void DisplayColor() { Console.WriteLine("Color is " + rcolor); } } // Driver Class class GFG { // Main Method static void Main() { ColorRectangle r1 = new ColorRectangle("pink", "Fibonacci rectangle", 2.0, 3.236); ColorRectangle r2 = new ColorRectangle("black", "Square", 4.0, 4.0); Console.WriteLine("Details of r1: "); r1.DisplayStyle(); r1.DisplayDim(); r1.DisplayColor(); Console.WriteLine("Area is " + r1.Area()); Console.WriteLine(); Console.WriteLine("Details of r2: "); r2.DisplayStyle(); r2.DisplayDim(); r2.DisplayColor(); Console.WriteLine("Area is " + r2.Area()); } }
Details of r1: Rectangle is Fibonacci rectangle Width and Length are 2 and 3.236 Color is pink Area is 6.472 Details of r2: Rectangle is Square Width and Length are 4 and 4 Color is black Area is 16
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