Hasta ahora hemos visto lo que son los objetos. Un programa informático se compone de muchos objetos, algunos de los cuales comparten la misma estructura y comportamiento. Si tuviéramos que definir su estructura y comportamiento objeto cada vez que queremos crear un objeto, estaríamos utilizando mucho código redundante. Por ello lo que se hace es crear una clase, que es una descripción de un conjunto de objetos que comparten una estructura y un comportamiento común. Y a partir de la clase, se crean tantas "copias" o "instancias" como necesitemos. Esas copias son los objetos de la clase. Realmente una clase es un "molde" que nos permite crear objetos de un determinado tipo.
Un ejemplo: definimos la clase Vehículo, que contendrá un conjunto de propiedades (marca, potencia, velocidadMax, etc) y un conjunto de métodos (aumentarVelocidad, ReducirVelocidad, etc). A partir de esa clase podremos instanciar objetos de tipo Vehículo: objBMW318, objMercedes220, etc. ¿Diferencia entre clase y objeto?. La clase no existe en memoria, realmente solo define la estructura de los objetos. Cuando un objeto es instanciado, se reserva un espacio de memoria para alojar sus datos. En realidad una clase se comporta como un tipo de datos mientras que un objeto es una instancia de ese tipo de datos, es decir, una variable de ese tipo de datos.
Las clases constan de datos y métodos que resumen las características comunes de un conjunto de objetos. Un programa informático está compuesto por un conjunto de clases, a partir de las cuales se crean objetos que interactúan entre sí.
Si recuerdas, cuando utilizábamos los tipos de datos enumerados, los definíamos con la palabra reservada enum
y la lista de valores entre llaves, y decíamos que un tipo de datos enum
no es otra cosa que una especie de clase en Java. Efectivamente, todas las clases llevan su contenido entre llaves. Y una clase tiene la misma estructura que un tipo de dato enumerado, añadiéndole una serie de métodos y variables.
En otras palabras, una clase es una plantilla o prototipo donde se especifican:
- Los atributos comunes a todos los objetos de la clase.
- Los métodos que pueden utilizarse para manejar esos objetos.
Para declarar una clase en Java se utiliza la palabra reservada class
. La declaración de una clase está compuesta por:
- Cabecera de la clase. La cabecera es un poco más compleja que como aquí definimos, pero por ahora sólo nos interesa saber que está compuesta por una serie de modificadores, en este caso hemos puesto
public
que indica que es una clase pública a la que pueden acceder otras clases del programa, la palabra reservadaclass
y el nombre de la clase. - Cuerpo de la clase. En él se especifican encerrados entre llaves los atributos y los métodos que va a tener la clase.
En la unidad anterior ya hemos utilizado clases, aunque aún no sabíamos su significado exacto. Por ejemplo, en los ejemplos de la unidad o en la tarea, estábamos utilizando clases, todas ellas eran clases principales, no tenían ningún atributo y el único método del que disponían era el método main()
.