Por ejemplo, en la clase Coche podríamos determinar la siguiente funcionalidad:
Igual que los atributos, también hay métodos de instancia (se aplican sobre una instancia: son los más comunes, sobre un objeto concreto) y métodos de clase (se aplican sobre la propia clase). Lo veremos.
Y algo hay que entender y es muy importante. No sólo el programador llama a los métodos (pasa mensajes) de los objetos. También el sistema puede ejecutar algunos métodos. Por ejemplo, cuando el usuario mueve el ratón el sistema llamará a algún método determinado con ciertos parámetros (por ejemplo, coordenadas) para indicar que el ratón ha sido movido.
class Coche {
}
Bueno, esto es hasta el momento una clase Java. Vamos a hacerla un poco más útil poniéndole atributos:
class Coche {
String color, modelo;
int velocidadMaxima;
boolean motorEncendido;
}
Y añadamos unos métodos sencillos:
class Coche {
String color, modelo;
int velocidadMaxima;
boolean motorEncendido;
Coche(String sColor, String sModelo, int iVelocidadMaxima) {
color=sColor;
modelo=sModelo;
velocidadMaxima=iVelocidadMaxima;
motorEncendido=false;
}
void arrancar() {
if (motorEncendido == true)
System.out.println( "El motor ya estaba encendido" );
else {
motorEncendido = true;
System.out.println( "El motor está ahora encendido" );
}
}
void visualizar() {
System.out.println( "Este coche es un " + modelo + ", de color " + color
);
if (motorEncendido == true)
System.out.println( "El motor está encendido." );
else System.out.println( "El motor está apagado."
);
}
}
Esto es hasta el momento lo que podría ser la definición de una clase en Java, pero como hemos comentado, una clase en sí no es nada más que el esquema de lo que serán los objetos o instancias de esa clase, por tanto, veremos ahora como hacer los objetos asociados al tipo de esa clase.
Bien, desde algún punto del programa (ya veremos desde dónde) queremos crear una instancia de Coche llamada tuCoche. Lo hacemos con new como sigue:
Coche tuCoche = new Coche("verde", "Seat 600", 40);
Una vez ejecutada esta sentencia ya está creada la instancia. Para acceder a sus atributos simplemente se indican detrás del nombre de la instancia y un punto:
tuCoche.color = "amarillo con lunares rojos";
Con la misma sintaxis se accede a los métodos como si fueran llamadas a función:
tuCoche.arrancar();
tuCoche.visualizar();
La notación para la distinción de los atributos de clase de los de instancia será:
Class Coche {
int velocidadMaxima; // de instancia (una copia para cada objeto
de la clase).
static int numeroDeCoches; // de clase (una sóla copia para
todos los objetos de la clase).
int obtenerVelocidadMaxima() {
/* Método de instancia */
return velocidadMaxima;
}
static int obtenerNumeroDeCoches() {
/* Método de clase */
return numeroDeCoches;
}
}