SlideShare una empresa de Scribd logo
Herencia
En java aunque no establezcamos de manera explícita la herencia siempre está presente, ya que
todas las clases que creemos heredan de la clase Object, por eso es válido decir que en java todo
es un objeto. La sintaxis para la composición es obvia pero, para realizar la herencia, hay una forma
claramente distinta. Cuando heredamos, estamos diciendo "Esta nueva clase es como esa clase
antigua", por ejemplo es decir que la clase Horas “es una” UnidadDeTiempo. Afirmamos esto en el
código dando el nombre de la clase como siempre pero, antes de la apertura del límite cuerpo de
clase, pondremos la palabra clave "extends" seguida por el nombre de la clase base. Cuando
hagamos esto, obtendremos automáticamente todos los datos miembros y métodos de la clase base.

Primero veamos como seria la clase UnidadDeTiempo:

public class UnidadDeTiempo {
int valor;
int tope;
public int forward(){
if(valor == tope)
valor=0;
else
valor++;
return valor;
}
public int reset(){
valor=0;
return valor;
}
}

Y nuestra clase Horas:

public class Horas extends UnidadDeTiempo{
public Horas() {
this.valor=0;
this.tope=23;
}
}
De esta manera sin necesidad de tener que escribir nuevamente todos el código de UnidadDeTiempo
lo tememos disponible en la clase Horas, pero que partes tenemos disponibles?, todos los atributos
y los métodos de la clase padre están disponibles en la clase hija pero dependiendo de los
modificadores de acceso o visibilidad de estos, por ejemplo los atributos y métodos de tipo friendly
solo estarán disponibles para las clases hijas que heredan de una clase padre en el mismo paquete,
los atributos y métodos de tipo public estarán disponibles para todas las clases que hereden de la
clase padre sin importar que se halle o no en el mismo paquete; los miembros protected también son
accesibles
desde
las
clases
hijas.
El código de nuestras clases hijas no tienen porque limitarse solo al código heredado, de hecho casi
siempre la herencia se hace para extender la funcionalidad de las clases heredadas añadiendo
nuevos
métodos
y
atributos.

La composición y la herencia
Tanto la composición como la herencia permiten poner sub-objetos dentro de tu nueva clase.
Podríamos preguntarnos cuál es la diferencia entre los dos, y cuándo elegir uno en lugar del otro. La
composición es generalmente usada cuando deseamos las características de una clase existente
dentro de una nueva clase, pero no su interfaz. Es decir, ponemos un para poder usarlo para
implementar características de nuestra nueva clase, pero el usuario de esa nueva clase verá el
interfaz
que
hemos
definido
en
lugar
del
interfaz
del
objeto
insertado.
Los objetos miembros usan la implementación ocultándose a sí mismos, por lo que esto es una cosa
segura a hacer y, cuando el usuario sabe que estamos uniendo un conjunto de partes, hace que el
interfaz
sea
más
fácil
de
entender.
Cuando heredamos, estamos cogiendo una clase existente y creando una versión especial de esa
clase. En general, esto significa que estamos tomando una clase de propósito general,
especializándola para un caso o necesidad particular. Pensando un poco, podrá entender que no
tendría sentido construir un coche usando un objeto vehículo (un coche no contiene un vehículo, ¡es
un vehículo!). La relación es- un viene expresada por la herencia, y la relación tiene un viene
expresada por la composición.

Más contenido relacionado

Similar a Herencia

Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
lissette_torrealba
 
Herencia
Herencia Herencia
Herencia
Yadith Checcllo
 
Historia de java (1)
Historia de java (1)Historia de java (1)
Historia de java (1)
coruniversitec
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos
Marielena Lujano
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptx
juan gonzalez
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1Rokr02
 
Historia java ruben rodriguez
Historia java ruben rodriguezHistoria java ruben rodriguez
Historia java ruben rodriguezcoruniversitec
 
Historia java ruben
Historia java rubenHistoria java ruben
Historia java ruben
coruniversitec
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
Sterling Rafael Santana Vargas
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdf
JCarlosCrespo
 
Clase y Herencia en VB
Clase y Herencia en VBClase y Herencia en VB
Clase y Herencia en VB
Leonardo Paul Lopez Zambrano
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
202100941c
 
Herencia poo
Herencia pooHerencia poo
Herencia poo
karina NAVA
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
KareliaRivas
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
maeusogo
 

Similar a Herencia (20)

Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
Herencia
Herencia Herencia
Herencia
 
Historia de java (1)
Historia de java (1)Historia de java (1)
Historia de java (1)
 
Historia de java (1)
Historia de java (1)Historia de java (1)
Historia de java (1)
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptx
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Historia java ruben rodriguez
Historia java ruben rodriguezHistoria java ruben rodriguez
Historia java ruben rodriguez
 
Act10byme
Act10bymeAct10byme
Act10byme
 
Historia java ruben
Historia java rubenHistoria java ruben
Historia java ruben
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdf
 
Clase y Herencia en VB
Clase y Herencia en VBClase y Herencia en VB
Clase y Herencia en VB
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
Herencia poo
Herencia pooHerencia poo
Herencia poo
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
Datos previos
Datos previosDatos previos
Datos previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 

Más de Manuel Alejandro Hernandez Sanchez

Más de Manuel Alejandro Hernandez Sanchez (20)

Serialización personalizada
Serialización personalizadaSerialización personalizada
Serialización personalizada
 
Ejemplo
EjemploEjemplo
Ejemplo
 
Entrada
EntradaEntrada
Entrada
 
Ejemplo
EjemploEjemplo
Ejemplo
 
Tipos de excepciones
Tipos de excepcionesTipos de excepciones
Tipos de excepciones
 
Introducción
IntroducciónIntroducción
Introducción
 
Tipo estático y tipo dinámico
Tipo estático y tipo dinámicoTipo estático y tipo dinámico
Tipo estático y tipo dinámico
 
Introducción
IntroducciónIntroducción
Introducción
 
Uso de polimorfismo
Uso de polimorfismoUso de polimorfismo
Uso de polimorfismo
 
Enlace dinámico
Enlace dinámicoEnlace dinámico
Enlace dinámico
 
Clase base
Clase baseClase base
Clase base
 
Por qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadoresPor qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadores
 
Sobrecarga de constructores
Sobrecarga de constructoresSobrecarga de constructores
Sobrecarga de constructores
 
Recolección de basura
Recolección de basuraRecolección de basura
Recolección de basura
 
Retorno de valores
Retorno de valoresRetorno de valores
Retorno de valores
 
Metodos de mensajes
Metodos de mensajesMetodos de mensajes
Metodos de mensajes
 
La destrucción del objeto
La destrucción del objetoLa destrucción del objeto
La destrucción del objeto
 
Acceso al objeto
Acceso al objetoAcceso al objeto
Acceso al objeto
 
Agregar un metodo que toma parametros
Agregar un metodo que toma parametrosAgregar un metodo que toma parametros
Agregar un metodo que toma parametros
 
Asignación de variables de referencia de objeto
Asignación de variables de referencia de objetoAsignación de variables de referencia de objeto
Asignación de variables de referencia de objeto
 

Herencia

  • 1. Herencia En java aunque no establezcamos de manera explícita la herencia siempre está presente, ya que todas las clases que creemos heredan de la clase Object, por eso es válido decir que en java todo es un objeto. La sintaxis para la composición es obvia pero, para realizar la herencia, hay una forma claramente distinta. Cuando heredamos, estamos diciendo "Esta nueva clase es como esa clase antigua", por ejemplo es decir que la clase Horas “es una” UnidadDeTiempo. Afirmamos esto en el código dando el nombre de la clase como siempre pero, antes de la apertura del límite cuerpo de clase, pondremos la palabra clave "extends" seguida por el nombre de la clase base. Cuando hagamos esto, obtendremos automáticamente todos los datos miembros y métodos de la clase base. Primero veamos como seria la clase UnidadDeTiempo: public class UnidadDeTiempo { int valor; int tope; public int forward(){ if(valor == tope) valor=0; else valor++; return valor; } public int reset(){ valor=0; return valor; } } Y nuestra clase Horas: public class Horas extends UnidadDeTiempo{ public Horas() { this.valor=0; this.tope=23; } }
  • 2. De esta manera sin necesidad de tener que escribir nuevamente todos el código de UnidadDeTiempo lo tememos disponible en la clase Horas, pero que partes tenemos disponibles?, todos los atributos y los métodos de la clase padre están disponibles en la clase hija pero dependiendo de los modificadores de acceso o visibilidad de estos, por ejemplo los atributos y métodos de tipo friendly solo estarán disponibles para las clases hijas que heredan de una clase padre en el mismo paquete, los atributos y métodos de tipo public estarán disponibles para todas las clases que hereden de la clase padre sin importar que se halle o no en el mismo paquete; los miembros protected también son accesibles desde las clases hijas. El código de nuestras clases hijas no tienen porque limitarse solo al código heredado, de hecho casi siempre la herencia se hace para extender la funcionalidad de las clases heredadas añadiendo nuevos métodos y atributos. La composición y la herencia Tanto la composición como la herencia permiten poner sub-objetos dentro de tu nueva clase. Podríamos preguntarnos cuál es la diferencia entre los dos, y cuándo elegir uno en lugar del otro. La composición es generalmente usada cuando deseamos las características de una clase existente dentro de una nueva clase, pero no su interfaz. Es decir, ponemos un para poder usarlo para implementar características de nuestra nueva clase, pero el usuario de esa nueva clase verá el interfaz que hemos definido en lugar del interfaz del objeto insertado. Los objetos miembros usan la implementación ocultándose a sí mismos, por lo que esto es una cosa segura a hacer y, cuando el usuario sabe que estamos uniendo un conjunto de partes, hace que el interfaz sea más fácil de entender. Cuando heredamos, estamos cogiendo una clase existente y creando una versión especial de esa clase. En general, esto significa que estamos tomando una clase de propósito general, especializándola para un caso o necesidad particular. Pensando un poco, podrá entender que no tendría sentido construir un coche usando un objeto vehículo (un coche no contiene un vehículo, ¡es un vehículo!). La relación es- un viene expresada por la herencia, y la relación tiene un viene expresada por la composición.