using System;
public class Parent
{
string parentString;
public Parent()
{
Console.WriteLine("Parent Constructor");
}
public Parent(string msg)
{
parentString = msg;
Console.WriteLine(parentString);
}
public void print()
{
Console.WriteLine("Im a parent class");
}
}
public class Child : Parent
{
///
<summary> /// En este constructor se llama explicitamente al constructor que coincida con la
/// lista de parametros del padre
///
/// Si no se usara : base("From derived") se llamaria al constructor por defecto en la
/// clase padre, Parent()
/// </summary>
public Child() : base("From derived")
{
Console.WriteLine("Child Constructor");
}
///
<summary> /// new puede ser usado como modificador en la declaracion de una funcion
/// en este caso padre e hijo tienen una misma funcion, print(), pero con new
/// se usara solo la del hijo, ocultando la del padre
///
/// esto es util especialmente cuando se quiere una implementacion distinta a
/// una funcion existente en la clase padre
///
/// se puede decir que es un override como en java
/// </summary>
public new void print()
{
//Llama explicitamente al metodo print() del padre
base.print();
Console.WriteLine("Im a child class");
}
public static void Main()
{
Child child = new Child();
child.print();
//Otra forma de llamar explicitamente a los miembros de la clase padre
//es por medio de un cast
((Parent)child).print();
}
}
Fuente:
C# Station