Skip to content

Instantly share code, notes, and snippets.

@javierguerrero
Created February 10, 2012 15:24
Show Gist options
  • Save javierguerrero/1790260 to your computer and use it in GitHub Desktop.
Save javierguerrero/1790260 to your computer and use it in GitHub Desktop.
Upcasting y Downcasting
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Animal
{
public void Comer() { }
}
class Ave : Animal
{
public void Volar() { }
}
class Program
{
static void Main(string[] args)
{
// upcasting: un tipo mas especializado se asigna en un tipo menos especializado, no se requiere ninguna sintaxis especial
Animal loquillo = new Ave();
loquillo.Comer(); // loquillo es un Animal, se puede acceder al método Comer()
loquillo.Volar(); // error de compilación. el compilador no puede saber que loquillo es un Ave.
// downcasting: un tipo menos especializado se asigna en un tipo mas especializado. requiere la sitaxis de casteo (Clase).
Ave ave = (Ave)loquillo;
ave.Volar(); // permitido porque para el compilador ave es un Ave
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment