Foros del Web » Programación para mayores de 30 ;) » Java »

Duda Herencia

Estas en el tema de Duda Herencia en el foro de Java en Foros del Web. Hola buenas, esto de herencia me enreda un poco a la hora de usarla. Resulta que tengo una clase asi @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 23/07/2012, 17:59
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Pregunta Duda Herencia

Hola buenas, esto de herencia me enreda un poco a la hora de usarla. Resulta que tengo una clase asi

Código PHP:
Ver original
  1. public class ClaseBase
  2. {
  3.      int numero;
  4.      int numero2;
  5.  
  6.  
  7.     public int Sumar(int x,int y)
  8.    {
  9.         numero=x;
  10.         numero2=y;
  11.        
  12.  
  13.       return x+y;
  14.     }
  15. }

Es posible crear una clase que herede de esta pero que en lugar de mandar 2 variables como parametro, mande 3??? o sea lo que quiero saber es que si con herencia es posible modificar lo que tenga adentro cierto metodo y no solo heredarlo


Saludos
  #2 (permalink)  
Antiguo 23/07/2012, 20:04
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: Duda Herencia

1. si tiene mas, menos, o son de diferentes tipos los argumentos, sería OTRO método, porque LA FIRMA es lo que lo identifica.

2. con la herencia no modificas la lógica del método heredado, lo sobrescribir @override, dando otra, pero la clase padre se conserva intacta.

Tendrías que leer un poco mas de teoría, porque estás medio errado en varios conceptos
__________________
BadProgrammerException!
  #3 (permalink)  
Antiguo 24/07/2012, 23:34
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Duda Herencia

En tu ejemplo las variable sglobales numero y numero2 no te sirven de nada pues en ningun momento les das un uso, ni en la suma si quiera......

Pero bueno, dejando de lado eso y llendo por tu pregunta de herencia....tu puedes hacer una clase que herede de esta que acabas de poner, esa clase hereda tanto las variables como el metodo a menos que sean private (que en tu ejemplo no lo son)... Si quieres que el mpetodo reciba 3 argumentos lo puedes hacer, pero ese ya seria un metodo diferente en la clase heredada un metodo que no existe en la clase superior...

En si, tu duda va mas enfocada a un tema llamado "Sobrecarga de Métodos"....
__________________
De nada, hay te encargo +1...
  #4 (permalink)  
Antiguo 26/07/2012, 02:15
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Duda Herencia

En el caso que te ocupa podriamos tener una clase base OperacionMatematica con parametro1 y parametro2, y unas clases hijas Suma, Resta, Multiplicacion, Division que extienden OperacionMatematica.

Entras parametros 1 y 2.

La clase base tiene un método abstracto operar() que por si misma no hace nada, pero cada una de las clases hijas la implementa de una manera diferente:
Suma = param1 + param2;
Resta = param1 - param2;
Multiplicacion = param1*param2;
Division = param1/param2;

Otra opción seria que la clase base tuviese el metodo ya implementado, y la clase hija lo sobreescribiese, como bien dice Firuzz, como por ejemplo una clase Trabajador que tuviese un metodo calcularSalario() que devolviese el valor de salario base, pero que para distintos tipos de trabajadores (clases hijas) realizase diferentes calculos.

Tampoco es necesario enviar los parametros en el metodo, siempre que la visibilidad sea adecuada los puede recoger de la propia clase. Otra cosa es que tu quieras enviarle esos parámetros desde fuera de la clase, que entonces sí necesitarias enviarlos.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: argumentos, herencia, parametros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:37.