Académique Documents
Professionnel Documents
Culture Documents
ndice Herencia
1 | Concepto de herencia en Java 3
3 | Sobrescribir mtodos 7
5 | Clases abstractas 12
6 | Polimorfismo 14
7 | La utilizacin de final 15
8 | La clase Object 16
Herencia | TELEFNICA // 3
Una subclase slo puede tener un superclase y una superclase puede En Java la clase raz de todas las clases es la clase Object y cuando
tener varias subclases, porque Java slo implementa la herencia una clase no hereda explcitamente de ninguna otra, lo esta haciendo
simple. de Object.
superclase ClaseRaiz
Clase_A Clase_B
public class public class Clase_A extends public class Clase_A_A extends
ClaseRaiz{ ClaseRaiz{ Clase_A{
//datos //datos //datos FIGURA 6.2: OBJECT EN API JDK 8
//mtodos //mtodos //mtodos
} } }
Cuando se instala JDK 8, se pueden utilizar todas las clases de la Las subclases heredan las funciones miembro (mtodos) de la
jerarqua de clases JSE 8, cuya documentacin se puede consultar superclase, respetando el tipo de acceso. Por tanto a un objeto
en: instanciado de una subclase se le podrn invocar las funciones de la
parte pblica de su propia clase y las de de la superclase.
Las subclases heredan las variables miembro (datos) de la
superclase, respetando el tipo de acceso. Por tanto un objeto
instanciado de una subclase ocupa el espacio de un objeto de la Pieza
superclase ms el espacio especifico de las variables miembro Se heredan los
+ unir()
propias. mtodos
+ cortar(int)
Tubo Plancha
Acanalado Liso Todos los objetos Pieza, tienen
- calibre: float - largo: float las funcionalidades unir y cortar.
- medida: String - ancho: float + unir() + unir()
Cada tipo diferente de
- espesor: float + cortar(int) + cortar(int)
Pieza especializa esas dos
+ pintar(String) funcionalidades.
Cada tipo diferente de
Acanalado Liso pieza puede aadir otras
Un objeto Plancha es una
fucnionalidades diferentes
Pieza por tanto tiene numero,
- material: String - color: String
nombre, largo, ancho y
- esFlexible: boolean - espesor: float espesor
Un objeto Tubo Liso es una FIGURA 6.4: SE HEREDAN LOS MTODOS.
Pieza, por tanto tiene numero,
nombre, calibre, medida,
material y esFlexible
3. Sobrescribir mtodos
Cuando se necesita que los objetos de las subclases tengan funcionalidades especializadas y distintas
de las heredadas, se definen esas funciones en dichas subclases. Este mecanismo se denomina
override, sobrescribir el funcionamiento del cdigo heredado de los mtodos de la superclase.
Para que exista override las funciones en la superclase y en las subclases tienen que tener
exactamente la misma forma: mismo nombre, mismo valor devuelto y misma lista de parmetros.
Herencia | TELEFNICA // 8
5. Clases abstractas
Si de una clase nunca se van a instanciar objetos, se denomina abstracta. Esto significa que dicha
clase define una representacin (datos) y un comportamiento (mtodos) comunes a las clases que
hereden de ella, los objetos sern instanciados de dichas clases, las cuales podrn especializar
las funcionalidades, sobrepasando los mtodos y podrn aadir ms atributos incorporando ms
variables miembro.
En java las clases abstractas se implementan utilizando el En la jerarqua de clases utilizado la clase Pieza es abstracta,
modificador abstract. nunca habr objetos que sean slo Pieza, sern siempre objetos
instanciados de las clases Plancha o Tubo o Acanalado o Fijo. Si se
<<abstract>> Pieza califica Pieza como abstract esto implica que no se pueden crear
new Pieza( numero, nombre)
# numero: int
objetos de esta clase, pero hay que tener presente que cualquier
# nombre:String objeto de las subclases son objetos de tipo Pieza.
6. Polimorfismo
El polimorfismo se implementa cuando con un identificador de tipo superclase se referencia a un
objeto instanciado de una subclase y se invoca a una funcin que dicha subclase sobrepasa.
En el cdigo siguiente:
7. La utilizacin de final
El modificador final tiene varias funcionalidades en Java, estas son:
Aplicada a variables locales, de instancia o de clase, hace que Aplicada a funciones de una superclase, implica que las subclases
no se puede modificar su valor una vez creada, son las llamadas no pueden sobrescribir dicha funcin. Esto es as para que
constantes. aquellas funcionalidades que no pueden cambiar en ninguna de
las clase que hereden la funcin final.
Ejemplos:
Aplicada a una clase, implica que de esta clase no se puede
heredar, estas clases se suelen denominar clase hoja y
por contraposicin la clase que esta en la parte superior de la
jerarqua se denomina clase raz.
public class Ejemplo{
final public static int MAX_ELEMENTOS = 100; //
constante de clase
}
Herencia | TELEFNICA // 16
8. La clase Object
La clase Object es la raz de la jerarqua
de clases del API JSE. Toda clase tiene package com.juan.piezas;
a Object como superclase. Por tanto public class PruebaObject {
todos los objetos, incluyendo los
arrays, pueden ejecutar los cdigos de public static void main(String[] args) {
las funciones implementadas en esta Object objeto;
//Se puede utilizar una variable Object para referenciar cualquier tipo
clase. objeto = new Acanalado (102,Humos, 30.5f,mms,plastico, true);
System.out.println(objeto es Acanalado: +
(objeto instanceof Acanalado? SI:NO));
System.out.println(La clase de objeto es: +objeto.getClass());
Como todas las clases son subclases de objeto.
Object, cualquier variable de referencia a
Slo se alcanzan
Object puede hacer referencia a un objeto funcionalidades
de cualquier clase. En la imagen siguiente de Object
se utiliza referencia Object para un objeto de
otra clase.
Los mtodos que define Object y estn disponibles en todos los Mtodo hashCode: Cuando se sobrepasa este mtodo hay que
objetos son los que se muestran en la tabla siguiente, algunos ya garantizar en lo posible que el entero que devuelve ser diferente
han sido utilizados y comentados: para dos objetos distintos. Si dos objetos son iguales tendran
que devolver el mismo entero.
Un cdigo generado por eclipse para estos dos mtodos Mtodo clone: Esta definido en el mbito protected, por tanto
es el siguiente: habr que definirlo en la clase que sea necesario, no se puede
invocar a un objeto esta funcionalidad protegida.
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pieza other = (Pieza) obj;
if (nombre == null) {
if (other.nombre != null)
return false;
} else if (!nombre.equals(other.nombre))
return false;
if (numero != other.numero)
return false;
return true;
}
Herencia | TELEFNICA // 19