Created
February 10, 2012 15:24
-
-
Save javierguerrero/1790260 to your computer and use it in GitHub Desktop.
Upcasting y Downcasting
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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