Está en la página 1de 6

UNIVERSIDAD SALESIANA DE BOLIVIA

ACTIVIDADES PARA LAS CLASES VIRTUALES


CLASE 23
Jueves 29 de abril de 2021
Materia: Programación III
Paralelo: 111
Docente: Ing. Simón Onofre
Carrera: Ingeniería de Sistemas

UNIDAD IV: HERENCIA

4.1 Introducción. Herencia.


La herencia es específica de la programación orientada a objetos, donde una clase
nueva se crea a partir de una clase existente. La herencia (a la que habitualmente
se denomina subclase) proviene del hecho de que la subclase (la nueva clase
creada) contiene los atributos y métodos de la clase primaria.
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.
Cuando hablamos de herencia en programación no nos referimos precisamente a
que algún familiar lejano nos ha podido dejar una fortuna, ya nos gustaría. En
realidad se trata de uno de los pilares fundamentales de la programación orientada
a objetos. Es el mecanismo por el cual una clase permite heredar las
características (atributos y métodos) de otra clase.

La herencia permite que se puedan definir nuevas clases basadas de unas ya


existentes a fin de reutilizar el código, generando así una jerarquía de clases dentro
de una aplicación. Si una clase deriva de otra, esta hereda sus atributos y métodos
y puede añadir nuevos atributos, métodos o redefinir los heredados.

Estoy seguro que cuando has leído “reutilizar” se te ha hecho la boca agua ¿verdad?
No hay nada mejor en programación que poder usar el mismo código una y otra vez
para hacer nuestro desarrollo más rápido y eficiente. El concepto de herencia
ofrece mucho juego. Gracias a esto, lograremos un código mucho más limpio,
estructurado y con menos líneas de código, lo que lo hace más legible.
En Java tenemos que tener claro cómo llamar a la clase principal de la que
heredamos y aquella que hereda de ella, así, 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.

Declara una jerarquía de herencia

 En Java, cada clase solo puede derivarse de otra clase. Esa clase se llama
superclase, o clase padre. La clase derivada se llama subclase o clase
secundaria.
 Utiliza la palabra clave extends para identificar la clase que extiende su
subclase. Si no declara una superclase, su clase amplía implícitamente la
clase Object. El objeto es la raíz de todas las jerarquías de herencia; Es la
única clase en Java que no se extiende de otra clase.

A continuación se muestra un ejemplo de Herencia. Donde la Clase padre es


Vehículo y las clases hijas o las subclases son: Coche, Moto y Bus.
Ventajas de Herencia:
 Evitar duplicidad y favorecer la reutilización de código (las subclases
utilizan el código de superclases).
 Facilitar el mantenimiento de aplicaciones. Podemos cambiar las clases
que usamos fácilmente.
 Facilitar la extensión de las aplicaciones. Podemos crear nuevas clases a
partir de otras existentes.

Desventajas:
 Se introduce una fuerte dependencia en la clase hija respecto a la clase
padre
 Un cambio en la clase padre puede tener efectos imprevistos en las clases
hijas
 Un objeto de una clase hija puede tener un comportamiento inconsistente
con lo esperado de un objeto de la clase padre,

Ejercicio. Identificar la clase padre y subclases de la siguiente figura:

Rta: Clase Padre: Figura


SubClases: Circulo y Cuadrado
Ejemplo de herencia:
Clase Persona
public class Persona {
private String ci;
private String nombre;
private int edad;
private String sexo;

//Creando un constructor con parámetros (recibe un parámetro)


public Persona()
{ this.ci="45789125 LP";
this.nombre="Julio Cesar";
this.edad=21;
this.sexo="Masculino";
}
public void llenar()
{
this.ci=JOptionPane.showInputDialog("Ingrese El CI: ");
this.nombre=JOptionPane.showInputDialog("INgrese el nombre: ");
this.edad=Integer.parseInt(JOptionPane.showInputDialog("Ingrese la edad"));
this.sexo=JOptionPane.showInputDialog("INgrese el sexo de la persona");
}

public void mostrar()


{
System.out.println("CI: "+this.ci);
System.out.println("NOMBRE: "+this.nombre);
System.out.println("EDAD: "+this.edad);
System.out.println("SEXO: "+this.sexo);

// Método que devuelve o extrae el nombre


public String getNombre()
{
return nombre;
}

// Método que devuelve o extrae la edad


public int getEdad()
{
return edad;
}

Clase Estudiante
public class Estudiante extends Persona {
private String carrera;
private int semestre;
private String matricula;

public void llenarE()


{ llenar();
this.carrera=JOptionPane.showInputDialog("Ingrese el nombre de la carrera: ");
this.semestre=Integer.parseInt(JOptionPane.showInputDialog("Ingrese el semestre"));
this.matricula=JOptionPane.showInputDialog("INgrese la matrícula:");

public void mostrarE()


{ mostrar();
System.out.println("CARRERA: "+this.carrera);
System.out.println("SEMESTRE: "+this.semestre);
System.out.println("MATRICULA: "+this.matricula);

}
}

Principal
public class Herencia1 {

public static void main(String[] args) {


Estudiante A= new Estudiante();
A.llenarE();
A.mostrarE();
}

}
Docente
public class Docente extends Persona {
private int RNI;
private String profesion;
public void llenarD()
{ llenar();
this.RNI=Integer.parseInt(JOptionPane.showInputDialog("Ingrese RNI"));
this.profesion=JOptionPane.showInputDialog("INgrese la PROFESIÓN:");

public void mostrarD()


{ mostrar();
System.out.println("RNI: "+this.RNI);
System.out.println("PROFESIÓN: "+this.profesion);

}
}
PrincipalDocente
public class Principal_Docente {
public static void main(String[] args) {
Docente A= new Docente();
A.llenarD();
A.mostrarD();
}
}

Temas de investigación para la feria Virtual de la carrera

1. Juegos educativos en java


2. Sistema transaccional en java
3. Para graficar funciones matemáticas en java
4. Concientización sobre el cuidado del covid
5. Juegos de razonamiento
6. Programa para lenguaje de señas
7. Programa para quechua
8. Otros.

Integrantes de 1 a 3

También podría gustarte