La herencia en la programación es nada mas y nada menos que usar los atributos y métodos que ya existen, en la POO se hace heredando de la clase que contengan los elementos necesarios para tal fin. La herencia en java (y en otros lenguajes) se declara con la palabra reservada extends seguidamente de la clase de la cual deseemos heredar. Esto se realiza con la finalidad de reutilizar código, como también es la base para el implementar el polimorfismo.
Lo primero que debemos de hacer es identificar la clase de la cual podamos usar la mayoría o su totalidad de código, para este caso usare el ejemplo anterior de una calculadora básica; para este caso se uso dos clases, una con los métodos necesarios para las operaciones y validación de números enteros, y otra clase donde se pedirán los datos y se mostraran los resultados. El principio de la herencia es usar métodos y atributos de la clase heredada como si fueran propios en la clase «heredera», así que no habrá necesidad de crear objetos para manipular los métodos y atributos.
import javax.swing.JOptionPane;
/**
* @author belial9826
*
* PRIMERA CLASE
*/
public class HerenciaJava extends funciones{//heredando de la clase funciones
public void trin(){//metodo para el menu principal
int op=0; //variable op para el control del menu principal
do{//comienzo del ciclo
op = Integer.parseInt(JOptionPane.showInputDialog(null, "1. Ingresar Numeros n 2. Sumar n 3. Restar "
+ "n 4. Multiplicar n 5. Salir"));
switch(op){
case 1:{//opcion de ingresar numeros
if(n1==0 && n2==0){//si no hay numeros se invoca el metodo para ingresarlos
insNum();
}
else{//si ya hay valores en las variables
int y;
y = JOptionPane.showConfirmDialog(null, "Desea ingresar nuevos numeros?"
, "Ya existen numeros", JOptionPane.INFORMATION_MESSAGE);
if(y == JOptionPane.YES_OPTION){//si se decide ingresar nuevos valores se invoca el metodo
insNum();
}
}
break;
}
case 2:{//opcion para sumar
if(n1==0 && n2==0){//si no se han ingresado valores se muestra un mensaje
JOptionPane.showMessageDialog(null, "Debe de ingresar primero los numeros!!!");
}
else{
JOptionPane.showMessageDialog(null, n1+" + "+n2+" = "+suma());//se invoca el metodo para sumar
}
break;
}
case 3:{
if(n1==0 && n2==0){//si no se han ingresado valores se muestra un mensaje
JOptionPane.showMessageDialog(null, "Debe de ingresar primero los numeros!!!");
}
else{
JOptionPane.showMessageDialog(null, n1+" - "+n2+" = "+resta());//se invoca el metodo para restar
}
break;
}
case 4:{
if(n1==0 && n2==0){//si no se han ingresado valores se muestra un mensaje
JOptionPane.showMessageDialog(null, "Debe de ingresar primero los numeros!!!");
}
else{
JOptionPane.showMessageDialog(null, n1+" * "+n2+" = "+multiplicacion());//se invoca el metodo para multiplicar
}
break;
}
}
}while(op!= 5);//el ciclo finaliza cuando se da cancelar o NO
}
public static void main (String[] args){ //metodo principal
HerenciaJava ob = new HerenciaJava();//se crea el objeto para invocar el metodo del menu
ob.trin();//se invoca el metodo para el menu
System.exit(0);//linea para asegurar la finalizacion del programa
} //fin metodo principal
}//final de la clase
import javax.swing.JOptionPane;
public class funciones {
int n1, n2;
public void insNum(){//funcion para ingresar los numeros de las operaciones
n1 = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el primer numero"));
n2 = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el segundo numero"));
}
public int suma(){//metodo para sumar, recibe dos numeros
int op; //variable que almacena la respuesta
op = n1 + n2; //operacion
return op; //devuelve el valor de la operacion
} //fin metodo suma
public int resta (){ //metodo para restar, recibe dos numeros
int op; //variable que almacena la respuesta
op = n1 - n2; //operacion
return op; //devuelve el valor de la operacion
}// fin metodo resta
public int multiplicacion(){ //metodo para multiplicar, recibe dos numeros
int op; //variable que almacena la respuesta
op = n1 * n2; //operacion
return op; //devuelve el valor de la operacion
} //fin metodo multiplicacion
public int division(){ //metodo para division, recibe dos numeros
int op; //variable que almacena la respuesta
op = n1 / n2; //operacion
return op; //devuelve el valor de la operacion
}//fin metodo division
public boolean isNum(String n){//metodo para validar si se ha ingresado un numero, recibe una cadena de texto
int a;//variable que almacena la cadena a convertir
try{
a = Integer.parseInt(n); //se convierte la cadena
return true; //si se ha convertido a entero devuelve verdadero
}
catch(NumberFormatException e){
return false; //si no se ha convertido a entero devuelve falso
}
}//fin metodo validar
}
Como vemos en la clase HerenciaJava se ha declarado solo un método en el cual se muestra el menú, pero se puede apreciar el uso de las variables n1 y n2 sin haberlas declarado, pero recordemos que podemos hacer uso de las variables y métodos que usemos en la clase de la cual hemos heredado. En las lineas 38, 47 y 56 se puede apreciar la invocación de los métodos directamente al igual que las variables. Se que soy algo repetitivo con esto, pero una vez que tengamos claro como funciona la herencia podremos crear clases con métodos específicos y con esto reutilizar gran parte de código que necesitemos.
Si intentamos invocar un método no estático en el método Main (linea 65 primer clase) nos arrojara un error, para solucionar este inconveniente debemos de hacer estático el método con la palabra reservada static para poder invocarlo directamente, este método estático no solo se podría invocar en el Main sino también en los demás métodos. Ademas de lo anterior no podremos heredar mas de una vez, para esto usamos polimorfismo, pero esto es tema para otro post 😉
Como se ve la implementación de herencia no es difícil, lo complicado es realizar una clase bien definida para poder usarla como base en las demás clases, así que no dudes en gastar mas tiempo en el análisis y formular los procesos y atributos necesarios para determinado fin.
¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…
Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…
Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…
Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…
Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…
Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…
Ver comentarios
hola amigo soy estudiante de ing. en sistemas de 3°semestre y necesito ayuda para elaborar un compilador en java en netbeans y tienne condiciones para variables,constantes, operadores logicos ademas de palabras reservadas necesito ayida porfavor
hola @xezuz, encontré en javaMexico lo necesario para la tarea que tienes, disculpa por no explicar como debe de ser, pero por cuestión de tiempo se me complica realizar un post en este momento sobre este tema. Espero te sirva, y si quieres comentar nuevamente o explicarnos tu experiencia con algún ejemplo lo pondré en un post respetando la autoria. Exitos.