Lista de excepciones potenciales

Todos los métodos pueden generar excepciones (condiciones de error). Estas excepciones pueden ser lanzadas por el método para que sean tratadas por l método que realizó la llamada. Todas las posibles excepcioes que pueda generar el método (y que no sean tratadas por el propio método) deben ser declaradas como una lista separada por comas en la declaración del mismo detrás de la declaración del identificador del método y lo lista de parámetros.

TipoDevuelto NombreMetodo ([lista_parametros]) [throws ListaExcepciones]

Modificadores de ámbito de los métodos

Los modificadores de ámbito de los métodos son exactamente iguales que los de los atributos, especifican la forma en que puede accederse a los mismos desde otras clases. Estos modificadores de ámbito son:

  • private
  • public
  • protected
  • ámbito por defecto
Acceso desde la misma clase Acceso desde subclases Acceso desde el mismo paquete Acceso desde todo el mundo
Modificador private SI NO NO NO
Modificador public SI SI SI SI
Modificador protected SI SEGÚN SI NO
Modificador por defecto SI NO

Métodos synchronized

Los métodos synchronized son métodos especiales para cuando varios threads (subprocesos) pueden acceder concurrentemente a los mismos datos y se desea que una sección crítica se proteja (bloquee) para que los threads accedan en exclusión mutua a la misma.

Métodos native

Los métodos native, son métodos que se encuentran escritos en otro lenguaje de programación distinto a Java, por ejemplo C. La integración de código escrito en otros lenguajes está en fase de desarrollo en la versión 1.0 del JDK, por lo tanto puede tener errores. Su estudio escapa del cometido de estos apuntes asi que, para el próximo ;)

Métodos final

Los métodos de una clase que se declaran de tipo final no pueden ser redefinidos por las subclases. Esta opcion puede adoptarse por razones de seguridad, para que nuestras clases no puedan ser extendidas por otros.

Veamos un ejemplo:

abstract class Animal{
    String nombre;
    int patas;
    public Animal (String n, int p){
        nombre = n;
        patas = p;
    }
    public final int numPatas(){
        return patas;
    }
    abstract void habla();
}

class Perro extends Animal{
    String raza;
    public Perro (String n, int p, String r){
        super(n,p);
        raza = r;
    }
    public void habla(){
        System.out.println("Me llamo "+nombre+": GUAU, GUAU");
        System.out.println("mi raza es:"+raza);
        System.out.println("Tengo "+numPatas()+" patas");
    }
}
class Gallo extends Animal{
    public Gallo (String n, int p){
        super(n,p);
    }
    public void habla(){

Métodos abstract

Los métodos abstract se declaran en las clases abstract. Es decir, si se declara algún método de tipo abstract, entonces, la clase debe declararse obligatoriamente como abstract.

Cuando se declara un método abstract, no se implementan el cuerpo del método, sólo su signatura. Las clases que se declaran como subclase de una clase abstract deben implementar los métodos abstract. Una clase abstract no puede ser instanciada, únicamente sirve para ser utilizada como superclase de otras clases.

Métodos static

Los métodos static son métodos de clase (no de objeto) y por tanto, no necesita instanciarse la clase (crear un objeto de esa clase) para poder llamar a ese método. se ha estado utilizando hasta ahora siempre que se declaraba una clase ejcutable, ya que para poder ejecturar el método main() no se declaraba ningún objeto de esa clase.

Los métodos de clase (static) únicamente pueden acceder a sus atributos de clase (static) y nunca a los atributos de objeto (no static)

Declaración de métodos

La declaración mínima sin modificadores de un método es:

TipoDevuelto NombreMetodo (Lista_Parametros)

Donde:

  • TipoDevuelto es el tipo de dato devuelto por el método (función). Si el método no devuelve ningún valor, en su lugar se indica la palabra reservada void.
  • NombreMetodo es un identificado válido en Java.
  • Lista_Parametros si tiene parámetros, es una sucesión de pares tipo - valor separados por comas. Los parámetros pueden ser también objetos. Los tipos simples de datos se pasan siempre por valor y los objetos y vectores por referencia

Métodos

La sintaxis general de los métodos es la siguiente:

declaracion de metodo{
    cuerpo del metodo
}

Resumen de ámbitos de atributos

Con este resumen vamos a verlo mucho más claro:

Acceso desde la misma clase Acceso desde subclases Acceso desde el mismo paquete Acceso desde todo el mundo
Modificador private SI NO NO NO
Modificador public SI SI SI SI
Modificador protected SI SEGÚN SI NO
Modificador por defecto SI NO SI NO