Sei sulla pagina 1di 8

Las variable en Java tienen una serie de reglas para ser definidas dentro de una clase Java y así

mismo estas tienen distintos alcances.

Una variable como ya lo sabemos es un espacio en memoria que se reserva para un dato en
especifico y para esto usamos los tipos de dato y también estos tipos de datos los abordaremos
después.

Alcances de las variables:

Variables Locales

Parámetros

Variables de instancia

Variables de clase

Variables Locales:

Las variables locales se definen en dentro de un método, por lo tanto esta variable es la que tiene
un ciclo de vida menor a las demás ya que solo es accesible en el método en el que se encuentra
declarada. Estas variables pueden estar dentro de una sentencia de comparación o en un ciclo
dentro del método y dependiendo también donde se declare es su acceso en el método, a
continuación mostraremos un ejemplo:

Parámetros:

Las variables que son aceptadas en un método se le denominan parámetros del método y estas
son accesibles dentro del método que los recibe, el alcance de un paramento puede ser tan largo
como una variable local o mas larga, pero nunca más corta:

Variables de Instancia:

Como ya se menciono el objeto también recibe el nombre de instancia, por lo tanto una variable
de instancia esta disponible durante la vida de un objeto.

Estas variables se declaran dentro de una clase pero fuera de todos los métodos, estas son
accesibles para absolutamente todos los métodos no estáticos.
Variables de Clase:

Las variables de clase se definen usando la palabra reservada static y esta pertenece a la clase, no
al objeto, para acceder a estas variables no es necesario instanciar un objeto si no desde la misma
clase.

1. Palabra clave static

Para crear dicho miembro, preceda su declaración con la palabra clave static. Cuando un

miembro se declara estático, se puede acceder antes de crear cualquier objeto de su clase y

sin referencia a ningún objeto.

Puede declarar que tanto los métodos como las variables sean estáticos. El ejemplo más

común de un miembro estático es main(). main() se declara como estático porque JAVA

debe llamarlo cuando comienza tu programa. Fuera de la clase, para usar un miembro

estático, solo necesita especificar el nombre de su clase seguido por el operador de punto.

Ningún objeto necesita ser creado.


Por ejemplo, si desea asignar el valor 10 a una variable estática llamada contar que es parte

de la clase Temporizador, use la siguiente línea:

Temporizador.contar = 10;

Este formato es similar al utilizado para acceder a las variables de instancia normales a

través de un objeto, excepto que se utiliza el nombre de clase. Se puede invocar un

método estático de la misma manera: mediante el uso del operador punto en el nombre de

la clase.

static es un modificador de no acceso en Java que se aplica a lo siguiente:

1. Variables

2. Métodos

3. Bloques

4. Clases anidadas

En Java existen 4 modificadores de acceso pero solo se pueden declarar explicitamente

Los modificadores de acceso en orden de restricción en Java son:

 private : Es el modificador de acceso mas restrictivo en Java solo es posible acceder

a los metodos o variables desde su misma clase.


 default : Este modificador de acceso es algo especial ya que no tiene una palabra

reservada para declararse, es decir al declarar una variable o método sin algún

modificador de acceso como private, protected o public , el modificador de acceso

de ese método o variable sera default, este modificador de acceso también es

llamado package , por ejemplo :

String variableDefault;

private String variableNoDefault;

 protected : El modificador de acceso protected indica que los elementos sólo pueden

ser accedidos desde su mismo paquete y desde cualquier clase que herede de la

clase en que se encuentra declarado el método o variable como protected, esto

quiere decir que si una clase quiere acceder a un método o variable marcado

como protected deberá heredar de esa clase o moverse a su mismo paquete si es que

no se encuentra.

 public : El modificador de acceso publico indica que será posible acceder al recurso

(que se encuentre marcado como public) desde cualquier clase o método sin

importar el paquete.

Sobreescritura en JAVA

la sobreescritura esta estrechamente ligada a la herencia de clases en JAVA,  recordemos

que una subclase hereda todos los métodos de su clase padre, estos metodos son accesibles

a dicha subclase a menos que la subclase sobreescriba los métodos. 


Conversión de objetos (Casting)

Diremos que una subclase esta sobreescribiendo un método de su clase padre cuando  esta

defina un método con las mismas características  que el método de la superclase.  

Asi como en la sobrecarga de metodos nos fijamos en su firma en  la sobreescritura nos

debemos fijaremos en la estructura del método , esta debe ser igual a la estructura de la

superClase, debe tener el mismo nombre y debe retornar el mismo tipo de dato , de la

misma forma no podra tener un tipo de acceso mas restrictivo que el original.

Los conceptos básicos de programación en Java a veces pueden aplicarse a los objetos de

una forma similar para obtener un resultado parecido, en este caso podemos ver la técnica

de hacer casting, si recordamos cuando hacíamos casting de una variable era simplemente

hacer que una variable de un tipo se transformara en otro tipo.

Con los objetos podemos hacer algo similar podemos cambiar el tipo de un objeto por otro

siempre y cuando esté dentro de la estructura jerárquica en su herencia.

Ejemplo :

Para hacer el casting podemos realizarlo de forma implícita, es decir, con una asignación

ya Java sabe que debe cambiar el tipo del objeto, para ello podemos hacer lo siguiente:
Objeto o = new Estudiante();

Si nos fijamos en la imagen, hemos declarado un objeto de la clase Objeto y luego decimos

que era una instancia de Estudiante, a pesar que ya el objeto era de un tipo hemos forzado

el casting y se convirtió en otro tipo con una simple asignación, esto es así porque la

clase Estudiante hereda de la clase Objeto.

Ahora si realizamos el caso contrario y un objeto de la clase Estudiante lo cambiamos a tipo

Objeto que sucedería:

Estudiante b = new Objeto()

En este caso tendríamos un error de compilación de nuestro programa, esto se debe a la

jerarquía de la herencia, como un objeto de Estudiante siempre será del tipo Objeto no hay

problema, pero un Objeto no siempre será Estudiante por tener un orden jerárquico

superior, por ello debemos tener cuidado cuando establecemos el casting de los tipos de

objeto.

Ahora si queremos hacer un tipo de casting explicito, podemos hacer este tipo de acciones

como pasar de un orden superior a uno inferior, veamos el siguiente caso:

Estudiante b = (Estudiante)o;
En este ejemplo le estamos indicando directamente al compilador que debe transformar al

objeto o del tipo Objeto al tipo Estudiante, con ello hacemos una conversión similar a la

que utilizamos con los tipos de variable primitivos.

Clase Object en Java (métodos equals, hashCode y toString)

equals(Object obj)

Compara el objeto dado con el objeto “this” (el objeto sobre el que se llama el método). Da

una forma genérica de comparar objetos para la igualdad. Se recomienda anular el

método equals(Object obj) para obtener nuestra propia condición de igualdad en Objects.

hashCode ()

Para cada objeto, JVM genera un número único que es hashcode. Devuelve enteros

distintos para objetos distintos. Un error común sobre este método es que el método

hashCode() devuelve la dirección del objeto, lo que no es correcto. Convierte la dirección

interna del objeto en un entero usando un algoritmo.

toString()

toString() proporciona la representación String de un Objeto y se usa para convertir un

objeto a Cadena (String). El método predeterminado toString() para la clase Object


devuelve una cadena que consiste en el nombre de la clase de la cual el objeto es una

instancia, el carácter arroba ‘@’ y la representación hexadecimal sin signo del código hash

del objeto.

Las clases abstractas en Java

 son clases que se declaran con la palabra “abstract” y pueden o no contener métodos

abstractos.

Los métodos abstractos son iguales que en las interfaces, solo son la declaración del

método sin el cuerpo.

De hecho, en las interfaces de forma automática todos los métodos son definidos como

abstractos por el compilador. Sin embargo, en las clases abstractas tenemos la oportunidad

de tener métodos normales y métodos abstractos.

No se permite la creación de instancias de una clase abstracta, pero si se puede aplicar la

herencia sobre ellas. Dejando de esta forma la implementación de la lógica de los métodos

abstractos a las clases hija.

Si la clase hija NO implementa lógica para los métodos abstractos tendrá que ser declarada

también como abstracta.

Potrebbero piacerti anche