El cuerpo de la clase

Una vez declarada la clase, se declaran los atributos y los métodos de la misma dentro del cuerpo.

declaracion de clase {
    declaracion de atributos
    declaracion de clases interiores
    declaracion de metodos
}

La declaración de clases interiores (clases anidadas) no es imprescindible para programar en Java.

final

Una clase declarada final impide que pueda ser superclase de otras clases. Dicho de otra forma, ninguna clase puede heredar de una clase final.

Esto es importante cuando se crean clases que acceden a recursos del sistema operativo o realizan operaciones de seguridad en el sistema. Si estas clases no se declaran como final, cualquier podría redefinirlas y aprovecharse para realizar operaciones sólo permitidas a dichas clases pero con nuevas intenciones, posiblemente oscuras.

A diferencia del modificador abstract, pueden existir en la clase métodos final sin que la clase que los contiene sea final (sólo se protegen algunos métodos de la clase que no pueden ser redefinidos).

Una clase no puede ser a la vez abstract y final ya que no tiene sentido, pero sí que puede ser public abstract o public final.

abstract

Las clases abstract no pueden ser instanciadas (declarar un objeto cuyo tipo sea esa clase). Sirven únicamente para declarar subclases que deben redefinir aquellos métodos que han sido declarados abstract. Esto no quiere decir que todos los métodos de una clase abstracta deban ser abstractos, incluso es posible que ningun de ellos lo sea. Aún en este último caso, la clase será considerada como abstracta y no podrán declararse objetos de esta clase.

Cuando alguno de los métodos de una clase es declarado abstracto, la clase debe ser obligatoriamente abstracta, de lo contrario, el compilador genera un mensaje de error.

Veamos un ejemplo para entender esto mejor.

abstract class Animal {
    String nombre;
    int patas;
    public Animal (String n, int p){
        nombre=n;
        patas=p;
    }

    abstract void habla();
    //metodo abstracto que debe ser redefinido por las subclases
}
    
    class Perro extends Animal {

public

Cuando se crean varias clases que se agrupan formando un paquete (package), únicamente las clases declaradas public pueden ser accedidas desde otro paquete.

Toda clase public debe ser declarada en un fichero fuente con el nombre de esa clase pública: NombreClase.java. De esta afirmación se deduce que en un fichero fuente puede haber más de una clase, pero sólo una con el modificador public

Modificadores de clase

Los modificadores de clase son palabras reservadas que se anteponen a la declaración de clase. Los modificadores posibles son los siguientes:

La sintaxis general es la siguiente:

modificador class NombreClase [extends NombreSuperClase]
[implements listadeInterfaces]

Lista de Interfaces

Una interface es un conjunto de constantes y métodos, pero de éstos últimos únicamente el formato, no su implementación. Cuando una clase declara una lista de interfaces, asume que se van a redefinir todos los métodos definidos en la interface.

Esta posibilidad corrige el inconveniente de que, en Java, no pueden declararse clases descendientes de más de una superclase.

class NombreClase implements Interface1, Interface2, ..., InterfaceN

Por ejemplo:

class NIF extends DNI implents OperacionesAritmeticas, OperacionesLogicas

En la interface OperacionesAritmeticas pueden estar definidos, por ejemplo, los métodos suma(), resta(),... Mediante esta declaración, se compromete la clase NIF a redefinir los métodos suma(), resta(),... de lo contrario, el compilador mostrará el correspondiente mensaje de error.

Declaración de la superclase (Herencia)

La superclase es la clase de la cual hereda otra clase todos sus atributos y métodos. La forma de declarar que una clase hereda de otra es:

class NombreClase extends NombreSuperClase

por ejemplo:

class NIF extends DNI

Declaración de clases

La declaración mínima para una clase es la siguiente:
class NombreClase

Una declaración de este tipo indica que la clase no desciende de ninguna otra, aunque en realidad, todas las clases declaradas en un programa escrito en Java son descendientes, directa o indirectamente, de la clase object que es la raíz de toda la jerarquía de clases en Java.

Ejemplo;

class ObjetoSimpleCreado {
    String variable = "una variable";
    int entero = 14;
    public String obtenerString(){
        return variable;
    }
}

class objetosimple{
    public static void main (String[] args){
        ObjetoSimpleCreado varObj = new ObjetoSimpleCreado();
        System.out.println(varObj.toString());
    }
}

Esto devuelve en pantalla:

ObjetoSimpleCreado@56ee8e

Clases y Métodos en Java

Como se ha visto en el capítulo anterior, en Java todo son clases (objetos).

Desde un punto de vista simplista, una clase es un conjunto de valores (atributos) junto con las funciones y procedimientos que operan sobre los mismos (métodos), todo ello tratado como entidad. Estas clases constituyen los bloques principales en los cuales se encuentra contenido el código.

En un fichero fuente puede declararse una o más clases. El cuerpo de las clases comienza con una llave abierta y termina con una llave cerrada "{}".

Un ejemplo:

Declaracion de clase {
    cuerpo de la clase
}

La declaración de una clase define un tipo de dato referencial.

Dentro del cuerpo de la clase se declaran los atributos de la clase y los métodos.

Vectores

Para manejar colecciones de objetos del mismo tipo estructurado en una sola variable se utilizar los vectores (o arrays o matrices o tablas). En Java, los vectores son en realidad objetos y por lo tanto se puede llamar a sus métodos.

Existen 2 formas de declararlos:

  • tipo nombre_vector[];
  • tipo[] nombre_vector;

Por ejemplo:

  • int vector1[];
  • int[] vector1;

Y se pueden usar vectores de más de una dimensión:

  • int matriz[][];
  • in[][] matriz;