SlideShare una empresa de Scribd logo
1 de 6
Blog sobre Java EE
Estás aquí: Inicio / Java SE / Java Básico / Java Constructores this() y super()
Java Constructores this() y super()
5 noviembre, 2014 por Cecilio Álvarez Caules 17 comentarios
En Java creamos objetos todos los días y para ellos usamos constructores. Todos
estamos muy habituados a programarlos pero siempre hay algunos bordes que se nos
escapan, vamos a revisarlos. Supongamos que tenemos la siguiente clase:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.arquitecturajava;
public class Persona {
private String nombre;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
Java Constructores por defecto
¿Tiene esta clase algún constructor?. La respuesta es sí toda clase Java si no se le
incluye ningún constructor el compilador añade un constructor por defecto. Así pues
el código para el compilador sería el siguiente:
1
2
3
4
5
6
package com.arquitecturajava;
public class Persona {
private String nombre;
public Persona() {
7
8
9
10
11
12
13
14
15
16
17
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
Como vemos para el compilador existe un constructor por defecto vacío. ¿Ahora bien
y si el código de nuestra clase incluyera un constructor con un parámetro?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.arquitecturajava;
public class Persona {
private String nombre;
public Persona(String nombre) {
this.nombre = nombre;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
 
En ese caso Java no añade el constructor por defecto. Así pues en ambos
casos tenemos un único constructor.
Java constructores y super()
Las dudas con los constructores aparecen ligadas a las jerarquías de clases y a la
palabra super(). Supongamos que tenemos la siguiente jerarquía:
En este caso podemos tener dos clases con el siguiente código por simplificar al
máximo :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.arquitecturajava;
public class Persona {
private String nombre;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
1
2
3
4
5
package com.arquitecturajava;
public class Deportista extends Persona{
}
Aunque en el código no aparezcan constructores existen dos constructores por
defecto uno en cada clase (Persona,Deportista) con el siguiente código:
Persona.java
1
2
3
public Persona() {
super();
}
Deportista.java
1
2
3
4
public Deportista() {
super();
}
Como podemos ver todos los constructores llaman por defecto al constructor de la
clase superior a través de una llamada a super() (en este caso al constructor por
defecto). Esto es debido a que los constructores no se heredan entre jerarquías de
clases. Por lo tanto la palabra super() siempre es la primera línea de un constructor e
invoca al constructor de la clase superior que comparta el mismo tipo de
parametrización.
Aunque nosotros no pongamos la palabra super() esta siempre será añadida
salvo que nosotros la añadamos. Por ejemplo si nuestros constructores tienen
parámetros las claúsulas super que deberemos construir serán las siguientes entre
Persona y Deportista para que el código compile:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.arquitecturajava;
public class Persona {
public Persona(String nombre) {
super();
this.nombre = nombre;
}
private String nombre;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
1
2
3
4
5
6
7
8
9
10
package com.arquitecturajava;
public class Deportista extends Persona{
public Deportista(String nombre) {
super(nombre);
}
}
Ya que sino el compilador añadirá super() por defecto y el código no compilará al
carecer la clase Persona de un constructor por defecto.
Usando this()
La otra posibilidad a super() es el uso de this() en la primera linea de un constructor.
Esto lo que hace es invocar a otro constructor que este en la misma clase y que
soporte el conjunto de parámetros que le pasamos.
1
2
3
4
package com.arquitecturajava;
public class Deportista extends Persona{
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private String deporte;
public String getDeporte() {
return deporte;
}
public Deportista(String nombre, String deporte) {
this(nombre);
this.deporte = deporte;
}
public void setDeporte(String deporte) {
this.deporte = deporte;
}
public Deportista(String nombre) {
super(nombre);
// TODO Auto-generated constructor stub
}
}
El uso de this() y de super() es excluyente o usamos uno u otro.
Otros artículos relacionados: Java Generic, Java ForEach vs Iterator , Expresiones
Lambda

Más contenido relacionado

Similar a ing de sistemas

2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
Notas clase
Notas claseNotas clase
Notas clase1 2d
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii1 2d
 
Notas clase
Notas claseNotas clase
Notas clase1 2d
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2juliocombativo
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontesjalzate
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii1 2d
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaMicael Gallego
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en JavaAlelt2890
 
Carro De Compras
Carro De ComprasCarro De Compras
Carro De Comprasriqsiq
 
Realizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y EficaciaRealizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y EficaciaAndres Almiray
 
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserTypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserMicael Gallego
 
Introduccion
IntroduccionIntroduccion
Introduccionreivax
 

Similar a ing de sistemas (20)

INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Notas clase
Notas claseNotas clase
Notas clase
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
Notas clase
Notas claseNotas clase
Notas clase
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
Java
JavaJava
Java
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
JPA en Netbeans
JPA en NetbeansJPA en Netbeans
JPA en Netbeans
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
9.herencia en java
9.herencia en java9.herencia en java
9.herencia en java
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Carro De Compras
Carro De ComprasCarro De Compras
Carro De Compras
 
Intro
IntroIntro
Intro
 
Realizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y EficaciaRealizando Pruebas en la JVM con Velocidad y Eficacia
Realizando Pruebas en la JVM con Velocidad y Eficacia
 
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserTypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (15)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

ing de sistemas

  • 1. Blog sobre Java EE Estás aquí: Inicio / Java SE / Java Básico / Java Constructores this() y super() Java Constructores this() y super() 5 noviembre, 2014 por Cecilio Álvarez Caules 17 comentarios En Java creamos objetos todos los días y para ellos usamos constructores. Todos estamos muy habituados a programarlos pero siempre hay algunos bordes que se nos escapan, vamos a revisarlos. Supongamos que tenemos la siguiente clase: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.arquitecturajava; public class Persona { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } } Java Constructores por defecto ¿Tiene esta clase algún constructor?. La respuesta es sí toda clase Java si no se le incluye ningún constructor el compilador añade un constructor por defecto. Así pues el código para el compilador sería el siguiente: 1 2 3 4 5 6 package com.arquitecturajava; public class Persona { private String nombre; public Persona() {
  • 2. 7 8 9 10 11 12 13 14 15 16 17 } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } } Como vemos para el compilador existe un constructor por defecto vacío. ¿Ahora bien y si el código de nuestra clase incluyera un constructor con un parámetro? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package com.arquitecturajava; public class Persona { private String nombre; public Persona(String nombre) { this.nombre = nombre; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } }   En ese caso Java no añade el constructor por defecto. Así pues en ambos casos tenemos un único constructor. Java constructores y super() Las dudas con los constructores aparecen ligadas a las jerarquías de clases y a la palabra super(). Supongamos que tenemos la siguiente jerarquía:
  • 3. En este caso podemos tener dos clases con el siguiente código por simplificar al máximo : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.arquitecturajava; public class Persona { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } } 1 2 3 4 5 package com.arquitecturajava; public class Deportista extends Persona{ } Aunque en el código no aparezcan constructores existen dos constructores por defecto uno en cada clase (Persona,Deportista) con el siguiente código: Persona.java
  • 4. 1 2 3 public Persona() { super(); } Deportista.java 1 2 3 4 public Deportista() { super(); } Como podemos ver todos los constructores llaman por defecto al constructor de la clase superior a través de una llamada a super() (en este caso al constructor por defecto). Esto es debido a que los constructores no se heredan entre jerarquías de clases. Por lo tanto la palabra super() siempre es la primera línea de un constructor e invoca al constructor de la clase superior que comparta el mismo tipo de parametrización. Aunque nosotros no pongamos la palabra super() esta siempre será añadida salvo que nosotros la añadamos. Por ejemplo si nuestros constructores tienen parámetros las claúsulas super que deberemos construir serán las siguientes entre Persona y Deportista para que el código compile:
  • 5. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.arquitecturajava; public class Persona { public Persona(String nombre) { super(); this.nombre = nombre; } private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } } 1 2 3 4 5 6 7 8 9 10 package com.arquitecturajava; public class Deportista extends Persona{ public Deportista(String nombre) { super(nombre); } } Ya que sino el compilador añadirá super() por defecto y el código no compilará al carecer la clase Persona de un constructor por defecto. Usando this() La otra posibilidad a super() es el uso de this() en la primera linea de un constructor. Esto lo que hace es invocar a otro constructor que este en la misma clase y que soporte el conjunto de parámetros que le pasamos. 1 2 3 4 package com.arquitecturajava; public class Deportista extends Persona{
  • 6. 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 private String deporte; public String getDeporte() { return deporte; } public Deportista(String nombre, String deporte) { this(nombre); this.deporte = deporte; } public void setDeporte(String deporte) { this.deporte = deporte; } public Deportista(String nombre) { super(nombre); // TODO Auto-generated constructor stub } } El uso de this() y de super() es excluyente o usamos uno u otro. Otros artículos relacionados: Java Generic, Java ForEach vs Iterator , Expresiones Lambda