La herencia es un aspecto básico de la programación orientada a objetos. Una superclase, también conocida como clase base, es una clase cuyos miembros se heredan, mientras que una subclase, también conocida como clase derivada, es una clase que hereda de una superclase. También se conocen como clases padre e hijo, respectivamente. De la misma manera que un hijo hereda los rasgos de sus padres y los padres heredan las características de sus antecesores, la herencia en los lenguajes de programación funciona de la misma manera.
Herencia jerárquica
Es una forma de transmitir características de una clase principal a una base, secundaria o subclase en términos técnicos y el aspecto orientado a objetos. La clase padre o superclase es la clase de la que se toman las propiedades, es decir, se heredan las características. La herencia jerárquica describe una situación en la que varias subclases heredan una clase principal. Un tipo de herencia en el que se hereda más de una clase de una única clase principal o base se conoce como herencia jerárquica. La clase base comparte muchas de las mismas propiedades que la clase principal, especialmente aquellas que son comunes en la clase principal. Una sola clase base da lugar a muchas clases. Es como tener varios hijos, cada uno con su propio conjunto de características adquiridas de sus padres. Por ejemplo, en el siguiente diagrama,
Ejemplo 1:
La clase base del siguiente ejemplo es Padre y las clases derivadas son NiñoPrimero y NiñoSegundo. Hemos creado objetos de ambas clases derivadas y llamamos a la misma función de clase base.
C#
// C# program to illustrate the above concept using System; // Base Class public class Father { public string FatherName() { return "Ravi"; } } // Derived Class public class ChildFirst : Father { public string ChildDName() { return "Rohan"; } } // Derived Class public class ChildSecond : Father { public string ChildDName() { return "Nikhil"; } } class GFG{ static public void Main() { ChildFirst first = new ChildFirst(); // Displaying Child Name and Father Name for // ChildFirst Console.WriteLine("My name is " + first.ChildDName() + ". My father name is " + first.FatherName() + "."); ChildSecond second = new ChildSecond(); // Displaying Child Name and Father Name for // ChildSecond Console.WriteLine("My name is " + second.ChildDName() + ". My father name is " + second.FatherName() + "."); } }
My name is Rohan. My father name is Ravi. My name is Nikhil. My father name is Ravi.
Ejemplo 2:
En el siguiente código, creamos tres clases: Person, Teacher y Doctor. En este ejemplo, la clase Person fue heredada por las clases Teacher y Doctor. Se utiliza un constructor en cada clase para inicializar miembros de datos. Luego creamos los objetos Teacher y Doctor y usamos TeacherDetails() y DoctorDetails() para producir información para Teacher y Doctor respectivamente.
C#
// C# program to illustrate the above concept using System; // Base Class class Person { public string name; public int aadhar_id; public int age; public Person(int aadhar_id, int age, string name) { this.aadhar_id = aadhar_id; this.name = name; this.age = age; } } // Derived Class class Teacher : Person { public int teacher_salary; public Teacher(int aadhar_id, int salary, string name, int age) : base(aadhar_id, age, name) { teacher_salary = salary; } public void TeacherDetails() { Console.WriteLine("teacher ID: " + aadhar_id); Console.WriteLine("teacher Name: " + name); Console.WriteLine("teacher Salary: " + teacher_salary); Console.WriteLine("teacher Age: " + age); } } // Derived Class class Doctor : Person { public int doctor_fees; public Doctor(int aadhar_id, int fees, string name, int age) : base(aadhar_id, age, name) { doctor_fees = fees; } public void DoctorDetails() { Console.WriteLine("Doctor ID: " + aadhar_id); Console.WriteLine("Doctor Name: " + name); Console.WriteLine("Doctor Fees: " + doctor_fees); Console.WriteLine("Doctor Age: " + age); } } class GFG{ static public void Main() { // Creating objects Teacher t = new Teacher(25054, 50000, "Sanjay", 28); Doctor d = new Doctor(25045, 750, "Rohit", 32); t.TeacherDetails(); Console.WriteLine( "-----------------------------------"); d.DoctorDetails(); } }
teacher ID: 25054 teacher Name: Sanjay teacher Salary: 50000 teacher Age: 28 ----------------------------------- Doctor ID: 25045 Doctor Name: Rohit Doctor Fees: 750 Doctor Age: 32
Publicación traducida automáticamente
Artículo escrito por priyavermaa1198 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA