Hola y bienvenidos a esta elección.
A continuación vamos a estudiar el tema de la palabra final en Java están listos.
Vamos bien vamos a cerrar este proyecto damos el derecho cerramos y vamos a crear un nuevo proyecto
Fineo Project.
Ya va huid Maiden ya la aplicación y el nombre del proyecto se va a llamar ejemplo palabra final
el grupo Airi MX con GM.
La versión 1.0 y vamos a quitar el nombre del paquete ya que cualquier paquete que creemos lo vamos
a crear manualmente y bien finalizar bien ahora vamos a crear una clase que nos va a servir para poner
en práctica este concepto así que vamos a crear primero una clase llamada persona damos el derecho nio
Java class la clave se llama persona y la depositamos en el paquete de palabras final
y damos sigue en finalizar quitamos este código.
Estos comentarios y podemos ver que ya estamos definiendo que esta clase se encuentra dentro del paquete
palabra final utilizando la palabra reservada package.
Posteriormente el nombre del paquete Punto y Coma esto debe ser lo primero que debemos encontrar en
nuestra clase y posteriormente los importes.
En este caso no tenemos ningún Import y posteriormente la definición de nuestra clase en este caso publi
class la clase que se llama persona y vamos a validar lo siguiente a nuestra clase vamos a agregar un
atributo privado de tipo string llamado nombre y agregamos un método jet set para leer el valor del
atributo y también poder modificarlo así que escribimos Public string G.T nombre para regresar en nombre
de ese atributo
y ponemos Luton disputo nombre y también agregamos el método respectivo.
Public void Seth nombre para modificar el valor de ese atributo definimos un argumento y modificamos
el atributo de nombre con el argumento que estamos recibiendo.
Eso es todo lo que vamos a agregar en esta clase.
Ahora vamos a crear otra clase que se va a llamar clase final así que sobre este mismo paquete palabra
final vamos a dar clic derecho Niu ya va a clase.
La clase se va a llamar
clase final y el nombre del paquete es palabra final damos en finalizar
y vamos a empezar a ver cómo aplica este concepto de la palabra final esta palabra final aplica en varios
contextos como es la definición de la clase.
La definición de un atributo y la definición de un método en estos tres ámbitos es que aplica la palabra
final.
Vamos a ir viendo cada uno de ellos.
En la definición de la clase podemos tener los modificadores primero en este caso el modificador de
acceso públic y posteriormente el modificador final y posteriormente la definición de la clase con clase
y el nombre de nuestra clase así que agregamos final en la definición de nuestra clase lo que significa
es que ya no podemos crear clases hijas de esta clase así que si intentamos crear una clase e hija por
ejemplo
clase hija y agregamos extensa
clase final
entonces vamos a observar un mensaje que no podemos heredar de la clase marcada como final así que el
modificador de acceso final en una clase significa que ya no podemos crear clases hijas de la clase
que hemos marcado como feina.
Si quitamos este modificador de acceso podemos observar que ya podemos crear una clase e hija de la
clase final pero el objetivo es agregarlo para que sepamos qué es lo que significa es que ya no podemos
crear clases hijas de una clase marcada como final
y ponemos entre comentarios este código para que no nos esté marcando este error bien ahora.
Este es el primer contexto al agregar final en la definición de nuestra clase como siguiente paso vamos
a agregar final pero en la definición de un atributo así que escribimos variables marcadas como fainá
así que vamos a definir un atributo Public final vamos a definir una variable de tipo entero y vamos
a definir una variable llamada Bahr número Punto y Coma si agregamos final en la definición del atributo
podemos observar que el compilador nos está indicando que debemos de inicializar.
Esta variable nos manda el error de que no se inicializar ni tampoco tenemos un constructor que inicialización
el valor de esta variable ya que podrían ser los dos momentos permitidos para inicializar una variable
marcada como final ya sea en la definición de la misma variable o dentro de un constructor.
Ahora si agregamos final en la definición de una variable significa que una vez que hemos asignado el
valor por ejemplo el valor de 10 entonces ya no vamos a poder modificar este valor nuevamente.
Así que funciona como si fuera una constante.
Una vez que lo hemos asignado el valor a una variable marcada como final entonces ya no vamos a poder
modificar su valor posteriormente.
Por ello es que si no le asignamos el valor al momento de definirlo nos está marcando el error debido
a que espera que le asignamos un valor para ya no poder modificarlo posteriormente.
Si quitamos este modificador final podemos observar que ya no nos marca ningún error ya que esta variable
como se puede modificar su valor posteriormente.
Entonces el compilador no nos manda ningún error y se podría modificar este valor de la variable número
posteriormente pero si lo marcamos como final solamente hay dos lugares donde se puede asignar un valor
a esta variable ya sea en esta misma definición o dentro de un constructor.
Así que ya tenemos la definición de nuestra variable final.
Sin embargo también existe el concepto de constantes en Java para definir una constante vamos a utilizar
los modificadores de acceso siguientes vamos a definir una variable que va a ser pública pero para definir
que sea una constante vamos a combinar los modificadores de Static y también el modificador de fainá
y definimos la variable var primitivo
y le asignamos por ejemplo el valor de 15.
A diferencia de esta variable var número en la cual no hemos especificado que sea de tipo estática la
diferencia es que esta variable no la vamos a poder acceder simplemente con el nombre de nuestra clase
punto.
El nombre de la variable en cambio debido a que esta variable ya es estática entonces vamos a poder
acceder con el nombre de la clase punto.
El nombre de nuestra variable aquí tiene un guion bajo aunque no se pueda observar claramente aquí tenemos
var guion bajo primitivo y definimos constantes en Java se acostumbra que el nombre de la variable sea
en mayúscula.
Y si tenemos más de una palabra entonces se deben de separar por guion bajo.
Por ello es que hemos escrito esta variable con mayúsculas ya que es una constante y entonces vamos
a poder acceder.
Esta constante utilizando el nombre de la clase y posteriormente el nombre de nuestra variable.
Incluso podemos hacer un import del atributo estático donde vayamos a utilizar esta variable y directamente
utilizar el nombre de la variable ya sin necesidad de anteponer el nombre de la clase.
Cualquier duda pueden revisar la elección de paquetes en Java donde se revisa el concepto de import
estatica y básicamente lo que estamos haciendo entonces es definir una constante ya que la vamos a poder
acceder con el nombre de la clase o con Static y posteriormente el marcarla como final quiere decir
que una vez que lo hemos asignado el valor ya no es posible modificarlo pero tenemos una variante cuando
trabajamos con objetos.
Vamos a crear también una variable de tipo Object para que veamos las diferencias cuando trabajamos
con Ovies así que definimos una constante Public Static final pero va a ser una variable de tipo personal.
La clase que hemos definido anteriormente y la variable se llama Var y un bajo persona y le vamos a
asignar una nueva referencia Niu persona punto y coma así que lo que significa es que una vez que le
hemos asignado una referencia esta variable ya no va a poder apuntar a otro objeto así que básicamente
lo que estamos haciendo es lo siguiente Estamos creando un objeto de tipo persona estamos creando la
variable VaR de un bajo persona y una vez que le proporcionamos la referencia de este objeto así es
como se va a quedar ya que es una constante y ya no va a poder apuntar a otro objeto de tipo persona
esto ya no va a ser posible ya que una vez que lo hemos asignado una referencia ya no va a poder apuntar
a otro objeto siempre va a apuntar al mismo objeto pero eso no significa que no pueda acceder a los
atributos de este objeto así que esta variable va a poder acceder a los atributos de este objeto tanto
para leerlos como para modificarlos así que va a poder modificar el estado del objeto es decir los valores
de los atributos pero ya no va a poder modificar la referencia así que lo que es constante es el valor
de la referencia es decir el objeto al cual apuntar pero lo que sí puede modificar es el estado del
objeto así que cuando empezamos con Java normalmente puede ser una de las dudas que tenemos cuando trabajamos
con objetos y la palabra final viene de todas maneras vamos a continuar haciendo este ejercicio para
que quede claro este concepto y tenemos un tercer rubro cuando agregamos final a un método sin embargo
este concepto lo veremos cuando veamos el tema de sobre escritura pero vamos a explicarlo aquí a grandes
rasgos para tener la idea general y cuando estudiamos el tema de sobre escritura nos va a quedar más
claro así que vamos a definir un método públic y vamos a agregar el modificador de acceso final va a
ser un método que no va a regresar nada por eso va a ser de tipo Veidt.
El método se llama método final y abrimos y cerramos llaves y básicamente lo que significa es que si
creamos una clase hija de esta clase de momento vamos a quitar el modificado el acceso final en la definición
de la clase.
De lo contrario no vamos a poder crear una clase hija de esta clase entonces sí podemos crear una clase
e hija de esta clase.
La clase final entonces lo que significa la palabra final en la definición de un método lo que significa
es que ya no vamos a poder sobreescribir el comportamiento definido en la clase padre ya no podemos
redefinir el comportamiento del método final en la clase e hija así que si queremos volver a escribir
el comportamiento del método final dentro de la clase hija
A esto se le conoce como escritura ya que va a modificar lo que haga el método final.
En este momento no tenemos ningún contenido pero cualquier contenido que tuviera lo podemos sobreescribir
o modificar dentro de un método definido en una clase e hija.
Aquí voy a quitar esta palabra final aquí está mal pero debido a que el método en la clase padres lo
estamos marcando como final quiero decir que en la clase e hija ya no podemos sobreescribir o modificar
el comportamiento desde la clase e hija así que nos manda el mensaje.
El método final no puede ser escrito ya que el método final en la clase padre fue marcado como final.
Sin embargo si quitamos este modificador podemos ver que ya podemos modificar sin ningún problema la
definición de este método así que este método modifica el comportamiento de la clase padre pero eso
lo vamos a ver a detalle cuando veamos el tema de escritura.
Sin embargo aquí básicamente lo que estamos indicando es que si marcamos el método padre como final
entonces en la clase hija ya no podemos modificar el comportamiento definido por un método marcado como
final en la clase padre.
Así que se lo dejamos como comentario pero tenemos que poner todo esto entre comentarios para que no
tengamos problema con el compilador
así que ponemos todo esto como comentarios y regresamos la palabra reservada final en la definición
de nuestra clase bien así que ya hemos visto con esto los tres conceptos cuando estamos trabajando con
la palabra al final en la definición de la clase en la definición de un atributo y en la definición
de un método.
Finalmente vamos a crear una clase para poner a prueba cuando estamos trabajando con constantes en Java
es decir cuando estamos trabajando con Static y final así que vamos a crear otra clase Java class.
La clase se va a llamar ejemplo palabra final y el nombre del paquete también va a ser palabra final
quitamos estos comentarios
agregamos un método main y vamos a agregar lo siguiente Vamos a utilizar nuestra clase final vamos a
intentar modificar un atributo marcado como final así que utilizamos nuestra clase final junto y Podemos
o sea que podemos acceder directamente a los atributos marcados como Static tanto la variable primitivo
como la variable persona así que vamos a utilizar en primer lugar la variable primitivo y si queremos
modificar por ejemplo en lugar de valor de 15 que fue el que agregamos si queremos modificarlo al valor
de 20 podemos observar que no podemos asignar un nuevo valor a una variable que ha sido marcada como
final pero si quitamos este modificador final entonces podemos observar que nos quita este error y ya
podemos modificar este valor pero precisamente es lo que debemos de observar que si agregamos final
quiere decir que una vez que le hemos asignado un valor ya no es posible modificarlo.
Ponemos eso entre comentarios para que no nos marque error y vamos a hacer lo siguiente.
Vamos a intentar modificar la referencia de un atributo de tipo Object usamos nuestra clase final punto
Bahr persona y vamos a intentar asignarle una nueva referencia de un nuevo objeto y podemos ver que
si nos posicionamos sobre este error nos Mardel que no podemos asignar un nuevo valor a una variable
marcada como final así que lo mismo que vimos con el tipo primitivo vamos a poner entre comentarios
esto sin embargo esto no quiere decir que la variable persona no pueda modificar el estado del objeto.
Sin embargo esto no quiere decir que la variable persona no pueda modificar el estado del objeto al
cual está apuntando ya no podemos asignarle una nueva referencia.
Es decir que ya no puede apuntar a un objeto pero sí puede acceder y modificar el estado del objeto
al cual está apuntando así que vamos a hacer lo siguiente clase final.
Punto bar persona punto.
Vamos a modificar el nombre vamos a modificar el nombre del objeto al cual está apuntando por ejemplo
ponemos el valor de Juan y posteriormente mandamos a imprimir este valor para mandar imprimir este valor.
Podemos acceder directamente también a esta variable simplemente poniendo el nombre de la clase punto
bar persona y finalmente accedemos al método Goeth nombre para conocer el valor de esta variable en
este caso del atributo nombre y podemos observar que ya tenemos el valor de Juan pero también podemos
modificar el estado del objeto al cual está apuntando así que podemos hacer lo mismo.
Vamos a copiar estas dos líneas y vamos a modificar el estado del objeto.
El nombre lo vamos a cambiar de Juan a Carlos y volvemos a imprimir
así que ya tenemos el estado del objeto en primer lugar el nombre de Juan y posteriormente el valor
de Carlos.
Así que con eso estamos demostrando lo siguiente al momento de definir una variable que es de tipo obvie
como en este caso la variable Bahr persona
y la marcamos como final entonces quiere decir que le tenemos que asignar una referencia de un objeto
y si es marcada como final posteriormente ya no va a poder apuntar a otro objeto siempre va a apuntar
al mismo objeto pero el estado del objeto sí lo puede modificar así que la primera vez mandó a llamar.
El método shed nombre de este objeto y cambió el valor del nombre actual utilizando el método el nombre
y para recuperar este valor manda llamar el método Goeth nombre y la siguiente vez lo que hizo fue que
como está apuntando al mismo objeto entonces cambia el valor de Juan lo cambió a Carlos y para modificar
este valor mandó llamar el método shed nombre así que ejecuta este método set para modificar el estado
de ese atributo y posteriormente para consultar este valor manda llamar el método del nombre así que
de esta manera una variable final ya no puede apuntar a otro objeto pero sí puede modificar y consultar
el estado del objeto al cual está apuntando bien así que con esto hemos visto todos los escenarios posibles.
Cuando estamos trabajando con la palabra final al momento de declarar nuestra clase al momento de declarar
un atributo y también al momento de definir un método de nuestra clase bien eso es todo por esta elección
y nos vemos en los siguientes vídeos.
Saludos.