0% encontró este documento útil (0 votos)
17 vistas5 páginas

Java 1

La herencia en Java permite que una subclase herede atributos y métodos de una superclase, facilitando la reutilización del código y el mantenimiento de aplicaciones. La subclase puede agregar sus propios elementos y acceder a los miembros de la superclase, excepto aquellos que son privados. La implementación de la herencia se realiza mediante la palabra clave 'extends' y se complementa con el uso de métodos de acceso para manejar variables privadas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas5 páginas

Java 1

La herencia en Java permite que una subclase herede atributos y métodos de una superclase, facilitando la reutilización del código y el mantenimiento de aplicaciones. La subclase puede agregar sus propios elementos y acceder a los miembros de la superclase, excepto aquellos que son privados. La implementación de la herencia se realiza mediante la palabra clave 'extends' y se complementa con el uso de métodos de acceso para manejar variables privadas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

La herencia es un pilar importante de OOP (Programación Orientada a Objetos).

Es el
mecanismo en Java por el cual una clase permite heredar las características
(atributos y métodos) de otra clase. Aprenda más a continuación.

En el lenguaje de Java, una clase que se hereda se denomina superclase. La clase


que hereda se llama subclase. Por lo tanto, una subclase es una versión
especializada de una superclase. Hereda todas las variables y métodos definidos por
la superclase y agrega sus propios elementos únicos.

Terminología importante

Superclase: la clase cuyas características se heredan se conoce como superclase (o


una clase base o una clase principal).
Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase
derivada, clase extendida o clase hija). La subclase puede agregar sus propios
campos y métodos además de los campos y métodos de la superclase.
Reutilización: la herencia respalda el concepto de “reutilización”, es decir,
cuando queremos crear una clase nueva y ya hay una clase que incluye parte del
código que queremos, podemos derivar nuestra nueva clase de la clase existente. Al
hacer esto, estamos reutilizando los campos/atributos y métodos de la clase
existente.
Table de Contenido
1. Concepto de Herencia
1.1 ¿Qué es Herencia?
2. Ejemplo de cómo usar la herencia en Java
3. Control de Acceso a Miembros en Herencia
4. Constructores y herencia
5. Tipos de herencia en Java
6. Datos importantes acerca de la herencia en Java
7. ¿Qué se puede hacer en una Subclase?
1. Concepto de Herencia
1.1 ¿Qué es Herencia?
Podemos definir la herencia como la capacidad de crear clases que adquieren de
manera automática los miembros (atributos y métodos) de otras clases que ya
existen, pudiendo al mismo tiempo añadir atributos y métodos propios.

Java soporta la herencia permitiendo una clase a incorporar otra clase en su


declaración. Esto se hace mediante el uso de la palabra clave extends. Por lo
tanto, la subclase se añade (se extiende) a la superclase.

Ventajas de la Herencia

Entre las principales ventajas que ofrece la herencia en el desarrollo de


aplicaciones, están:

Reutilización del código: En aquellos casos donde se necesita crear una clase que,
además de otros propios, deba incluir los métodos definidos en otra, la herencia
evita tener que reescribir todos esos métodos en la nueva clase.
Mantenimiento de aplicaciones existentes: Utilizando la herencia, si tenemos una
clase con una determinada funcionalidad y tenemos la necesidad de ampliar dicha
funcionalidad, no necesitamos modificar la clase existente (la cual se puede seguir
utilizando para el tipo de programa para la que fue diseñada) sino que podemos
crear una clase que herede a la primera, adquiriendo toda su funcionalidad y
añadiendo la suya propia.
2. Ejemplo de cómo usar la herencia en Java
La palabra clave utilizada para la herencia es extends

Ejemplo: Comencemos con un breve ejemplo que ilustra varias de las características
clave de la herencia. El siguiente programa crea una superclase llamada
DosDimensiones, que almacena el ancho y la altura de un objeto bidimensional, y una
subclase llamada Triangulo. Observe cómo se usa la palabra clave extends para crear
una subclase.
//Clase para objetos de dos dimensiones
class DosDimensiones{
double base;
double altura;

void mostrarDimension(){
[Link]("La base y altura es: "+base+" y "+altura);
}
}
//Una subclase de DosDimensiones para Triangulo
class Triangulo extends DosDimensiones{
String estilo;

double area(){
return base*altura/2;
}

void mostrarEstilo(){
[Link]("Triangulo es: "+estilo);
}
}

class Lados3{
public static void main(String[] args) {
Triangulo t1=new Triangulo();
Triangulo t2=new Triangulo();

[Link]=4.0;
[Link]=4.0;
[Link]="Estilo 1";

[Link]=8.0;
[Link]=12.0;
[Link]="Estilo 2";

[Link]("Información para T1: ");


[Link]();
[Link]();
[Link]("Su área es: "+[Link]());

[Link]();

[Link]("Información para T2: ");


[Link]();
[Link]();
[Link]("Su área es: "+[Link]());

}
}
Salida:

Información para T1:


Triangulo es: Estilo 1
La base y altura es: 4.0 y 4.0
Su área es: 8.0
Información para T2:
Triangulo es: Estilo 2
La base y altura es: 8.0 y 12.0
Su área es: 48.0
× Nota: En el programa anterior, cuando se crea un objeto de clase Triangulo, una
copia de todos los métodos y campos de la superclase adquiere memoria en este
objeto. Es por eso que, al usar el objeto de la subclase, también podemos acceder a
los miembros de una superclase.
Tenga en cuenta que durante la herencia solo se crea el objeto de la subclase, no
de la superclase.

En la práctica, la herencia y el polimorfismo se usan juntos en Java para lograr un


rendimiento rápido y legibilidad del código.

3. Control de Acceso a Miembros en Herencia


A menudo una variable de instancia de una clase se declarará privada () para evitar
su uso no autorizado o alteración. Heredar una clase no anula la restricción de
acceso privado. Por lo tanto, aunque una subclase incluye a todos los miembros de
su superclase, no puede acceder a los miembros de la superclase que se han
declarado privados.

Por ejemplo, si, como se muestra aquí, la base y la altura se vuelven privados en
DosDimensiones, entonces Triangulo no podrá acceder a ellos.

Ejemplo:

//Clase para objetos de dos dimensiones


class DosDimensiones{
private double base;
private double altura;

void mostrarDimension(){
[Link]("La base y altura es: "+base+" y "+altura);
}
}
//Una subclase de DosDimensiones para Triangulo
class Triangulo extends DosDimensiones{
String estilo;
double area(){
return base*altura/2; //Error! no se puede acceder
}

void mostrarEstilo(){
[Link]("Triangulo es: "+estilo);
}
}
La clase Triangulo no se compilará porque la referencia a la base y altura dentro
del método area() causa una infracción de acceso. Como la base y altura se declaran
privados, solo son accesibles para otros miembros de su propia clase. Las subclases
no tienen acceso a ellas.

Recuerde que un miembro de la clase que ha sido declarado private seguirá siendo
privado para su clase. No es accesible por ningún código fuera de su clase,
incluidas las subclases.

Al principio, podría pensar que el hecho de que las subclases no tengan acceso a
los miembros privados de las superclases es una restricción seria que impediría el
uso de miembros privados en muchas situaciones. Sin embargo, eso no es verdad. Los
programadores de Java suelen utilizar métodos de acceso para proporcionar acceso a
los miembros privados de una clase.

Lectura Recomendada
Modificadores de Acceso
Aquí hay una reescritura de las clases DosDimensiones y Triangulo que usa métodos
para acceder a las variables de instancia privadas base y altura:

//Clase para objetos de dos dimensiones


class DosDimensiones{
private double base;
private double altura;

//Métodos de acceso para base y altura


double getBase(){return base;}
double getAltura(){return altura;}
void setBase(double b){base=b;}
void setAltura (double h){altura=h;}

void mostrarDimension(){
[Link]("La base y altura es: "+base+" y "+altura);
}
}
//Una subclase de DosDimensiones para Triangulo
class Triangulo extends DosDimensiones{
String estilo;

double area(){
return getBase()*getAltura()/2;
}

void mostrarEstilo(){
[Link]("Triangulo es: "+estilo);
}
}

class Lados3{
public static void main(String[] args) {
Triangulo t1=new Triangulo();
Triangulo t2=new Triangulo();

[Link](4.0);
[Link](4.0);
[Link]="Estilo 1";

[Link](8.0);
[Link](12.0);
[Link]="Estilo 2";

[Link]("Información para T1: ");


[Link]();
[Link]();
[Link]("Su área es: "+[Link]());

[Link]();

[Link]("Información para T2: ");


[Link]();
[Link]();
[Link]("Su área es: "+[Link]());

}
}
Salida:

Información para T1:


Triangulo es: Estilo 1
La base y altura es: 4.0 y 4.0
Su área es: 8.0

Información para T2:


Triangulo es: Estilo 2
La base y altura es: 8.0 y 12.0
Su área es: 48.0

También podría gustarte