Anda di halaman 1dari 4

Clases(GuadeprogramacindeC#)

VisualStudio2015

Unaclaseesunaconstruccinquepermitecreartipospersonalizadospropiosmediantela
agrupacindevariablesdeotrostipos,mtodosyeventos.Unaclaseescomounplano.Definelos
datosyelcomportamientodeuntipo.Silaclasenosedeclaracomoesttica,elcdigodecliente
puedeutilizarlamediantelacreacindeobjetosoinstanciasqueseasignanaunavariable.La
variablepermaneceenmemoriahastaquetodaslasreferenciasaellaestnfueradelmbito.En
esemomento,CLRlamarcacomoaptaparalarecoleccindeelementosnoutilizados.Silaclasese
declaracomoesttica,soloexisteunacopiaenmemoriayelcdigodeclientesolopuedetener
accesoaellaatravsdelapropiaclaseynodeunavariabledeinstancia.Paraobtenerms
informacin,veaClasesestticasysusmiembros(GuadeprogramacindeC#).
Adiferenciadelosstructs,lasclasesadmitenlaherencia,unacaractersticafundamentaldela
programacinorientadaaobjetos.Paraobtenermsinformacin,veaHerencia(Guade
programacindeC#).
DeclararclasesLasclasessedeclaranmediantelapalabraclaveclass,talcomosemuestraenel
ejemplosiguiente:C#
publicclassCustomer
{
//Fields,properties,methodsandeventsgohere...
}
Elniveldeaccesoprecedealapalabraclaveclass.Como,enestecaso,seutilizapublic,cualquiera
puedecrearobjetosapartirdeestaclase.Elnombredelaclasesiguealapalabraclaveclass.El
restodeladefinicineselcuerpodeclase,dondesedefinenelcomportamientoylosdatos.Los
campos,propiedades,mtodosyeventosdeunaclaseseconocencolectivamentecomomiembros
declase.
Crearobjetos
Aunqueseutilizanavecesdeformaintercambiable,unaclaseyunobjetosoncosasdiferentes.Una
clasedefineuntipodeobjeto,peronoespropiamenteunobjeto.Unobjetoesunaentidadconcreta
basadaenunaclasey,aveces,sedenominainstanciadeunaclase.
Losobjetossepuedencrearconlapalabraclavenewseguidadelnombredelaclaseenlaquese
basarelobjeto,delamanerasiguiente:C#
Customerobject1=newCustomer();
Cuandosecreaunainstanciadeunaclase,unareferenciaalobjetosevuelveapasaral

programador.Enelejemploanterior,object1esunareferenciaaunobjetobasadoenCustomer.Esta
referenciaapuntaalnuevoobjeto,peronocontienelosdatosdelobjeto.Dehecho,sepuedecrear
unareferenciaaobjetosincrearunobjeto:
C#
Customerobject2;
Noserecomiendacrearestetipodereferenciasquerealmentenoapuntanaunobjetoexistente,ya
quealintentarelaccesoaunobjetoatravsdeesareferenciaseproducirunerrorentiempode
ejecucin.Noobstante,estetipodereferenciasepuedecrearparahacerreferenciaaunobjeto,ya
seacreandounnuevoobjetooasignndolaaunobjetoexistente,delaformasiguiente:
C#
Customerobject3=newCustomer();
Customerobject4=object3;
Estecdigocreadosreferenciasaobjetoqueserefierenalmismoobjeto.Porconsiguiente,los
cambiosrealizadosenelobjetoatravsdeobject3sereflejarnenlosusosposterioresde
object4.Puestoqueelaccesoalosobjetosbasadosenclasesserealizaporreferencia,lasclasesse
denominantiposporreferencia.
Herenciadeclase
Laherenciaserealizaatravsdeunaderivacin,loquesignificaqueunaclasesedeclarautilizando
unaclasebasedelacualheredalosdatosyelcomportamiento.Unaclasebaseseespecifica
anexandodospuntosyelnombredelaclasebaseacontinuacindelnombredelaclasederivada,
delmodosiguiente:
C#
publicclassManager:Employee
{
//Employeefields,properties,methodsandeventsareinherited
//NewManagerfields,properties,methodsandeventsgohere...
}
Cuandounaclasedeclaraunaclasebase,heredatodoslosmiembrosdelaclasebaseexceptolos
constructores.
AdiferenciadeC++,unaclaseenC#solopuedeheredardirectamentedeunaclasebase.Sin
embargo,dadoqueunaclasebasepuedeheredardeotraclase,unaclasepuedeheredar
indirectamentedevariasclasesbase.Adems,unaclasepuedeimplementardirectamentemsde
unainterfaz.Paraobtenermsinformacin,veaInterfaces(GuadeprogramacindeC#).
Unaclasesepuededeclararcomoabstracta.Unaclaseabstractacontienemtodosabstractosque
incluyenunadefinicindefirmaperoningunaimplementacin.Nosepuedencrearinstanciasdelas

clasesabstractas.Solosepuedenutilizaratravsdeclasesderivadasqueimplementanlosmtodos
abstractos.Porelcontrario,unaclaseselladanopermitequeotrasclasesderivendeella.Para
obtenermsinformacin,veaClasesymiembrosdeclaseabstractosysellados(Guade
programacindeC#).
Lasdefinicionesdeclasesepuedendividirentrearchivosdecdigofuentediferentes.Paraobtener
msinformacin,veaClasesymtodosparciales(GuadeprogramacindeC#).
Descripcin
Enelejemplosiguiente,sedefineunaclasepblicaquecontieneuncamponico,unmtodoyun
mtodoespecialdenominadoconstructor.Paraobtenermsinformacin,veaConstructores(Gua
deprogramacindeC#).Luegosecreaninstanciasdelaclaseconlapalabraclavenew.
C#
publicclassPerson
{
//Field
publicstringname;
//Constructorthattakesnoarguments.
publicPerson()
{
name="unknown";
}
//Constructorthattakesoneargument.
publicPerson(stringnm)
{
name=nm;
}
//Method
publicvoidSetName(stringnewName)
{
name=newName;
}
}
classTestPerson
{
staticvoidMain()
{
//Calltheconstructorthathasnoparameters.
Personperson1=newPerson();
Console.WriteLine(person1.name);

person1.SetName("JohnSmith");
Console.WriteLine(person1.name);
//Calltheconstructorthathasoneparameter.
Personperson2=newPerson("SarahJones");
Console.WriteLine(person2.name);
//Keeptheconsolewindowopenindebugmode.
Console.WriteLine("Pressanykeytoexit.");
Console.ReadKey();
}
}
//Output:
//unknown
//JohnSmith
//SarahJones

Anda mungkin juga menyukai