Vamos a ver en Java qué es una clase, los constructores y qué son los métodos y fields. Antes que nada, voy a introducir la forma de pensar para programar correctamente en Java.
Java está pensado para programar orientado a objetos (OOP o Object Oriented Programming). Nuestro código estará formado por capas y abstracciones, todo a partir de clases, las cuales facilitarán el desarrollo. Ten esto en cuenta:

Programa > Clases > Fields, Constructor y Métodos
Clases
Una clase es como una plantilla que define cómo será un objeto. No deja de ser un molde. A la hora de querer utilizar una clase que hayamos creado, hará falta instanciarla para obtener el objeto.
Vamos a crear la clase Vehicle
para representar un vehículo en nuestro programa, como si fuera un videojuego. Para ello, damos clic derecho en nuestro paquete, seleccionamos Nuevo
y Java Class
. Ahí lo colocaremos en un nuevo paquete con el nombre vehicles
.

Paso 1

Paso 2

Paso 3
¡Perfecto! Ya tenemos la clase Vehicle
. Para poder instanciar esta clase y poder usarla en nuestro programa desde Main
, podemos importar esta nueva clase e instanciarla usando la palabra clave new
:
import me.polvallverdu.course.vehicles.Vehicle;
public class Main {
public static void main(String[] args) {
Vehicle vehiculo = new Vehicle();
}
}
vehiculo
ahora mismo es un objeto Vehicle
. Lo hemos instanciado usando la palabra clave new
, seguida del nombre de la clase (Vehicle
), y finalmente los paréntesis ()
. Hemos estado viendo esto de los paréntesis durante ya bastante tiempo. Creo que es hora de ver qué son.
Argumentos
Los argumentos son valores que se pasan a un método o a un constructor cuando se llama. Se declaran como si fueran variables, y cuando llamemos a un método que requiera argumentos, los pasaremos como variables.
Por ejemplo, cuando instanciábamos el Scanner
le pasábamos System.in
como argumento, o cuando llamábamos a String.format()
le pasábamos dos Strings
.
En nuestra clase Vehicle
, de momento no pedimos ningún argumento, por lo cual no hace falta pasar nada entre paréntesis.
Fields
Un Field es una variable que pertenece a un objeto específico creado a partir de una clase. Los Fields en conjunto tienen la función de almacenar información específica de ese objeto.
Vamos a añadir unos fields a nuestra clase Vehicle
para tener un poco de información sobre el vehículo.
Antes de programar cualquier cosa, ¿qué variables hemos de tener en cuenta en un vehículo? Seguramente muchas, pero vamos a simplificarlo. De momento pondremos una variable para saber si el vehículo está encendido o apagado y cuánto combustible tiene. También añadiremos una variable final para indicar cuál es el combustible máximo que acepta el depósito. Para ello, necesitaremos un boolean
y dos int
s.
package me.polvallverdu.course.vehicles;
public class Vehicle {
boolean powered;
final int maxFuel;
int fuel;
}
Está muy bien la declaración, pero habría que darles un valor, ¿no?
Constructores
Un constructor es un método especial utilizado para inicializar un objeto cuando se crea una instancia de una clase. Este puede recibir argumentos y es ideal para asignar las variables que hemos declarado más arriba.
Para definir un constructor, primero escribiremos el nombre de nuestra clase, luego declararemos los argumentos que acepta y, por último, el código que correrá al instanciarse un objeto entre {}
.
En nuestra clase Vehicle
, asumiremos que siempre empezará apagado y con el combustible máximo, con lo cual nos quedará un constructor así:
package me.polvallverdu.course.vehicles;
public class Vehicle {
boolean powered;
final int maxFuel;
int fuel;
Vehicle(int maxFuel) {
this.powered = false;
this.maxFuel = maxFuel;
this.fuel = maxFuel;
}
}
La palabra clave
this
indica que queremos acceder a los fields de nuestra clase, no a otra posible variable que esté en nuestro código. En este caso, la usamos para dejar claro que nosotros queremos asignar el valor a nuestros fields.
Cuando instanciemos la clase Vehicle
para crear un objeto de ella, lo primero que se ejecutará será el código dentro del constructor. Este no deja de ser un método especial, como una entrada.
¡Vamos a ver qué es un método!
Métodos
Un método es un grupo de instrucciones que realizan una tarea específica. Este tiene un nombre, puede recibir argumentos y puede devolver un valor.
Si queremos que un método no devuelva valor, pondremos que devuelve
void
.
Para definir un método, primero se especifica el tipo de valor que devolverá, luego el nombre de la función (tiene las mismas restricciones que los nombres de variable) y, por último, los argumentos que acepta. Luego, dentro de {}
, irán las instrucciones que se ejecutarán al llamar a la función.
En nuestra clase Vehicle
, le añadiremos métodos para poder encender y apagar el vehículo, y poder recargar el depósito. También haremos que cada vez que se encienda, le saque 10 de combustible al depósito. Si implementamos esto, quedará así:
package me.polvallverdu.course.vehicles;
public class Vehicle {
boolean powered;
final int maxFuel;
int fuel;
Vehicle(int maxFuel) {
this.powered = false;
this.maxFuel = maxFuel;
this.fuel = maxFuel;
}
void on() {
this.fuel -= 5;
this.powered = true;
}
void off() {
this.powered = false;
}
void fillUp() {
this.fuel = this.maxFuel;
}
}
Si ahora intentamos volver a Main
, veremos que nos sale un error. Se debe a que no hemos especificado el acceso a nuestros fields, a nuestro constructor y a nuestros métodos.