public static void Main()
Persona empleado = new Empleado() {
empleado.ImprimirDescripcion();
empleado.ImprimirNombre();
Persona empleadoMensual = new EmpleadoMensual() {
empleadoMensual.ImprimirDescripcion();
empleadoMensual.ImprimirNombre();
public abstract class Persona {
public string Nombre { get; set; }
public abstract void ImprimirDescripcion();
public virtual void ImprimirNombre() {
Console.WriteLine("Soy una persona, con nombre: {0}", this.Nombre);
public class Empleado: Persona {
public int NroEmpleado { get; set; }
public override void ImprimirDescripcion() {
Console.WriteLine("Soy un empleado");
public override void ImprimirNombre() {
Console.WriteLine("Soy una empleado, con nombre: {0}", this.Nombre);
public class EmpleadoMensual: Empleado {
public int SalarioMensual { get; set; }
public override void ImprimirDescripcion() {
Console.WriteLine("Soy un empleado mensual");
public new void ImprimirNombre() {
Console.WriteLine("Soy una empleado mensual, con nombre: {0}", this.Nombre);