¿Qué significa clase?
Una clase -en el contexto de Java– es una plantilla utilizada para crear objetos, definir tipos de datos y métodos de objetos.
Las clases son categorías, y los objetos son elementos dentro de cada categoría. Todos los objetos de clase deben tener las propiedades básicas de clase.
Las propiedades básicas incluyen los atributos/valores y métodos reales que puede utilizar el objeto.
Definición de clase
Una clase en Java es una plantilla lógica para crear objetos que comparten propiedades y métodos comunes.
Por tanto, todos los objetos de una clase determinada tendrán los mismos métodos o propiedades.
Por ejemplo: en el mundo real, un gato concreto es un objeto de la clase «gatos». Todos los gatos del mundo comparten algunas características de la misma plantilla, como ser felino, tener cola o ser el más chulo de todos los animales.
En Java, la clase «Gato» es el modelo a partir del cual se pueden generar todos los gatos individuales que incluyen todas las características de los gatos, como la raza, el color del pelaje, la longitud de la cola, la forma de los ojos, etc.
Así, por ejemplo, no puedes crear una casa a partir de la clase gato, porque una casa debe tener determinadas características -como tener una puerta, ventanas y un tejado- y ninguna de estas propiedades del objeto se encuentra en la clase gato.
Una declaración de clase se compone de las siguientes partes:
- Modificadores
- Nombre de la clase
- Superclase (el nombre de la clase padre, si existe)
- Interfaces implementadas (si las hay)
- Palabras clave adecuadas en función de si la clase extiende a partir de una Superclase y/o implementa una o varias interfaces
- Cuerpo de la clase entre llaves {}
Los constructores se utilizan para crear e inicializar nuevos objetos en una clase. Toda clase debe tener un constructor, ya sea uno por defecto proporcionado por el compilador de Java o uno nuevo escrito para esa clase.
El constructor se invoca cada vez que se construye un nuevo objeto, pero una clase puede tener varios constructores. Se utiliza para asignar valores por defecto a cada variable de la clase para crear un objeto completamente formado.
Todas las variables que definen tanto la clase como los objetos (longitud de la cola, raza, pelaje, etc.) son campos de esa clase. En la clase «Gato», no puedes imaginar un gato físicamente existente que no tenga pelaje, altura, peso, etc.
El constructor, por tanto, inicializa un objeto con un conjunto de valores asignados de forma estándar que pueden ser establecidos por el programador o por Java (constructor por defecto).
Para implementar el comportamiento de la clase y sus objetos, se utilizan métodos. Por ejemplo, «jugar con una cadena» o «maullar para pedir comida a las 4 de la mañana» son métodos.
Tres tipos diferentes de variables
Variables locales
Variables temporales definidas dentro de métodos. Se declaran e inicializan dentro de ese método, y pasarán a la recolección de basura una vez finalizado el método.
Por ejemplo: en el método «jugar con una cadena», la cadena es una variable local.
Variables de instancia
Son variables inherentes a un objeto y a las que se puede acceder desde dentro de cualquier método, constructor o bloque.
Se destruyen cuando se destruye el objeto.
Variables de clase
Las variables de clase o variables estáticas se declaran con la palabra clave static en una clase. Son similares a las variables de instancia, pero se crean cuando se inicia el programa y se destruyen cuando éste se detiene.
La principal diferencia con las variables de instancia es en qué ámbito están disponibles. Una variable de clase es accesible desde una instancia de objeto, mientras que una variable de instancia no es accesible desde un método de clase.