Exactamente, si, se heredan y no pueden modificarse en sí.
Lo que yo me refiero esque el código anterior... si eliminamos el modificador FINAL, me ejecuta el mismo codigo sin este modificador, cosa que no debería ser asi.
Observa el código:
class Prueba{
public static void main
(String arg
[]){ Padre obj1=new Padre();
Hija obj2= new Hija();
System.
out.
println("En el metodo principal, clase principal (Padre): "+obj1.
padre1()); System.
out.
println("En el metodo principal, clase principal (Hija): "+obj2.
hija1());
}
}
class Padre{
final int x=5; //QUITANDO ESTE FINAL Y PONIENDOLO , RESULTA LO MISMO
public int padre1(){
System.
out.
println("Dentro de la clase Padre: "+x
); return x;
}
}
class Hija extends Padre{
public int hija1(){
System.
out.
println("Dentro de la clase hija: "+x
); return x+1;
}
}
Tenemos un programa nada mas que como ejempliyo del modificador FINAL. Pero... que ocurre si en la clase padre que está definido el modificador final, lo dejamos como:
class Padre{
int x=5; //QUITANDO ESTE FINAL Y PONIENDOLO , RESULTA LO MISMO
public int padre1(){
System.
out.
println("Dentro de la clase Padre: "+x
); return x;
}
}
en vez de:
class Padre{
final int x=5; //QUITANDO ESTE FINAL Y PONIENDOLO , RESULTA LO MISMO
public int padre1(){
System.
out.
println("Dentro de la clase Padre: "+x
); return x;
}
}
Lo curioso del programa esque al eliminar el modificador final te queda el mismo programa pero sin el modificador FINAL y
Obtenemos el mismo resultado. Por ello, no me explico porque, si eliminamos este modificador, como si lo dejamos, obtenermos el mismo resultadoSegún mi forma de verlo, en caso de que eliminaramos el modificador final de la variable x, sería un codigo que inicializara una variable en un metodo constructor de la clase padre y que mediante el uso de super(). Mandaríamos el constructor copiado a la hija, de tal forma, estaría usandose la variable X, mediante herencia y sin el uso de la particula final.
Despues de todo este royo, por si no lo has entendio: Jjaja, sorry por no explicarme bien: Si tienes el codigo anterior y eliminas FINAL, te resulta lo mismo que si lo mantienes. XD
Un saludo y gracias!