CLASES Y OBJETOS EN JAVA: ESTRUTURA BÁSICA
Una clase es una plantilla que define las variables y los métodos que son comunes para todos los objetos de un cierto tipo. Una clase define la forma y comportamiento de un objeto. Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada class seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la clase. Un archivo de Java debe tener el mismo nombre que la clase que contiene, y se les suele asignar la extensión ".java". Las clases típicas de Java incluirán variables y métodos de instancia. Los programas en Java completos constarán por lo general de varias clases de Java en distintos archivos fuente:
class Nombre_de_clase {
tipo_de_variable nombre_de_atributo1;
tipo_de_variable nombre_de_atributo2;
// . . .
tipo_devuelto nombre_de_metodo1 (lista_de_parametros) {
cuerpo_del_metodo1;
}
tipo_devuelto nombre_de_metodo2 (lista_de_parametros) {
cuerpo_del_metodo2;
}
// . . .
Los tipos tipo_de_variable y tipo_devuelto, han de ser tipos simples Java o nombres de otras clases ya definidas. Tanto Nombre_De_Clase, como los nombre_de_atributo y nombre_de_método, han de ser identificadores Java válidos.
class MiPunto {
int x, y;
}
Definimos la clase "Mipunto", dentro de ella declaramos dos atributos X e Y que son enteros. Los atributos se pueden declarar con dos clases de tipos: un tipo simple Java (ya descritos), o el nombre de una clase (será una referencia a objeto).
Los métodos son subrutinas que definen la interfaz de una clase, sus capacidades y comportamiento. Un método ha de tener por nombre cualquier identificador legal distinto de los ya utilizados por los nombres de la clase en que está definido. Los métodos se declaran al mismo nivel que las variables de instancia dentro de una definición de clase.
int metodoSuma ( int paramX, int paramY) {
return (paramX + paramY);
}
Este método devuelve la suma de dos enteros, en el caso de que no se desee devolver ningún valor se deberá indicar como tipo la palabra reservada void. Así mismo, si no se desean parámetros, la declaración del método debería incluir un par de paréntesis vacíos (sin void):
void metodoVacio() {};
Los métodos son llamados indicando una instancia individual de la clase, que tendrá su propio conjunto único de variables de instancia, por lo que los métodos se pueden referir directamente a ellas.
Objetos
Las clases pueden implementar un método especial llamado constructor. Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables explícitamente para su iniciación.
El constructor tiene exactamente el mismo nombre de la clase que lo implementa; no puede haber ningún otro método que comparta su nombre con el de su clase. Una vez definido, se llamará automáticamente al constructor al crear un objeto de esa clase (al utilizar el operador new).
Un constructor puede:
a) Carecer de parámetros: que no sea necesario pasarle un parámetro o varios al objeto para inicializarse. Un constructor sin parámetros se denomina "constructor general".
b) Carecer de contenido. En general un constructor no estará vacío, pero en algunos casos particulares puede estarlo. Si el constructor carece de contenido los campos se inicializan con valor nulo o, si son tipos definidos en otra clase, como se haya definido en el constructor de la otra clase. Excepto en casos controlados, evitaremos que existan constructores vacíos.
New:
Taxi taxi1 = new Taxi(); //creacion de un objeto taxi1
Persona persona1 = new Persona(); //creacion de un objeto tipo persona1
TaxiCond taxiCond1 = new TaxiCound (taxi1, persona1)//creacion de un objeto tipo TaxiCond
pasando como parametros otros objetos creados previamente
Para instanciar o crear un objeto el método que se utiliza es "new". "New" crea un objeto de la clase que le especifiquemos pero antes de esto se tiene que declarar la variable que contendrá ese nuevo objeto. Cuando se ejecuta una sentencia "new" para crear un objeto de una clase, lo que realmente se hace es llamar al método constructor correspondiente a esa clase. Es decir, nosotros tenemos "Taxi taxi1 = new Taxi()", bien en verdad a lo que nosotros estaríamos llamando es a "public taxi1 () {}"