Ámbito de Utilización.

Estructuración en Paquetes.

A nada que el sistema que queramos implementar sea mediano o grande, el número de clases que tendremos que usar y definir se hará muy grande (varios cientos, con bastante facilidad). Para facilitar el manejo de tantas clases (e interfases) Java las permite agrupar en paquetes (packages). Esto además facilita el evitar conflictos de nombres con clases llamadas igual.

La sintaxis para los paquetes es la que sigue:

package automoviles;

class Coche {
   ...
}

Y en otra clase podremos hace uso de la clase coche como sigue:

package simuladores;

import automoviles.Coche;

class Simulador {
    Coche coche;

    ...

}

También podríamos haber puesto:

package simuladores;

import automoviles.*;

class Simulador {
    Coche coche;

    ...

}

Teniendo así disponibles todas las clases del objeto coche. Nota: el archivo que almacene la clase debe de estar en una ruta de directorios que sea igual al nombre del paquete, por ejemplo si mi paquete es: package automoviles.terrestres; y mi clase se llama Coche, el archivo Coche.java ha de estar en la ruta: .../automoviles/terrestres/Coche.java. Otro inciso: el archivo se tiene que llamar igual que la clase que contiene así este Coche.java contendrá dentro class Coche ....

Por defecto tenemos acceso a las clases definidas en java.lang (que es el paquete lang –de lenguaje- dentro del paquete java). Para utilizar clases de otros paquetes habrá que referirse a ellos explícitamente.

Ámbito de utilización de atributos y métodos.

Para un atributo o método tenemos cuatro posibles modificadores de ámbito de acceso, es decir, podemos especificar qué clases pueden acceder a un atributo o método. Vamos a ver estos cuatro modificadores: Veamos la sintaxis para estos modificadores:

public class Ejemplo {
    public int entero;
    protected String cadena;
    private float numeroReal;

    public Ejemplo() {
    }

    public void metodoPublico() {
        metodoPrivado();
        metodoProtegido();
        metodoPublico();
        entero=1;
        cadena="asdf";
        numeroReal=2.2;
        ...
    }
    protected void metodoProtegido() {
        ...
    }
    private void metodoPrivado();
}

Dentro de la propia clase que los define podemos acceder sin ningún problema a los miembros propios. Pero, veamos que sucede si tratamos de acceder a esos miembros desde una clase que hereda de ella:

public class EjemploHija extends Ejemplo {
    public void unMetodo() {
        metodoPublico();
        metodoProtegido();
        metodoPrivado(); // -> Ilegal.
        entero=2;
        cadena="jkjkl";
        numeroReal=3.1; // -> Ilegal.
    }
}

Y desde una clase que haga clientela de la primera:

Ejemplo miEjemplo = new Ejemplo();
miEjemplo.metodoPublico();
miEjemplo.metodoProtegido(); // -> Ilegal.
miEjemplo.metodoPrivado(); // -> Ilegal.
miEjemplo.entero=5;
miEjemplo.cadena="ajsdg"; // -> Ilegal.
miEjemplo.numeroReal=34.2; // -> Ilegal.

Nota: Para las clases sólamente podemos utilizar los modificadores public y package.

Final.

         public static final NUM_PROVINCIAS = 52;
 
Hay muchas constantes definidas en la API de Java: Math.PI, Color.red, Color.blue, etc.
  Las variables finales deben inicializarse en la misma declaración, ya que después no podrán cambiarse. Las variables locales no pueden definirse como finales.

Ejemplo 1.

Veamos un ejemplo de como sería la sintaxis en Java para irnos acostumbrando a la notación. Es un ejemplo de un Coche "tiene" un motor, hace clientela de él.

El ejemplo lo componen los archivos Coche.java, Motor.java y Prueba1.java.

Se encuentran en el directorio:

\Curso Java\Java\Ejemplos\curso\


Ejemplo 2.

Veamos un ejemplo de como sería la sintaxis en Java para la herencia. En él la clase CocheDeportivo "es un" Coche variando su comportamiento.

El ejemplo lo componen los archivos Coche.java, CocheDeportivo.java, Motor.java y Prueba2.java.

Se encuentran en el directorio:

\Curso Java\Java\Ejemplos\curso\
 
 

Seguir