Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cuando escribimos cdigo Java escribimos clases o interfaces, dentro de estas escribimos las variables y mtodos. La forma en la que declaremos las clases, variables y mtodos tiene implicaciones en el comportamiento de nuestro cdigo, por ejemplo, cuando declaramos una clase como public (pblico) esta clase puede ser accedida o vista desde cualquier clase dentro de nuestra aplicacin. Reglas de declaracin de archivos de cdigo fuente:
Slo debe haber una clase declarada pblica dentro de un archivo de cdigo. Los comentarios pueden ir en cualquier lnea del cdigo. Si tenemos una clase declarada pblica en un archivo, el nombre del archivo debe ser el mismo de la clase pblica, por ejemplo, para la clase "public class Empleado" el archivo debe tener el nombre "Empleado.java". Si la clase forma parte de un paquete, la declaracin de este paquete debe ir primero antes que la declaracin de la clase. Si no se manejan paquetes y se importan clases, con la palabra reservada "import" (importaciones), estos "import" debe declararse antes que la clase. Si no se tienen ni paquetes ni importaciones la declaracin de la clase debe aparecer en la primera lnea (aunque pueden ir comentarios antes de esta). Las importaciones y los paquetes se aplican para todas las clases declaradas en un archivo, no hay forma de que declares mltiples clases en un archivo y pertenezcan a diferentes paquetes o usen diferentes importaciones. Un archivo puede tener ms de una clase no pblica.
Modificadores de acceso: public, private, protected. Modificadores de no acceso: algunos como final, static, abstract, etc.
Primero debemos de tener en mente que con los modificadores de acceso podemos establecer si una clase puede ser accedida o no por un determinado recurso. Existen 4 niveles de acceso pero 3 modificadores de acceso. El cuarto nivel de acceso de control es el usado por defecto, que se establece cuando no declaramos ningn modificador de acceso a nuestra clase, es decir, todas las clases, variables y mtodos cuentan con un control de acceso. Los cuatro niveles de acceso funcionan para las variables y mtodos pero una clase solo puede ser declarada pblica o por defecto.
en
un
segundo
archivo
tenemos:
package aviones; import autos.Toyota; public class Boing extend Toyota { } Como podemos, ver la clase "Toyota" y la clase "Boing" se encuentran en diferentes paquetes. La importacin en la parte superior de clase "Boing" est tratando de importar a la clase "Toyota", la clase "Toyota" compila bien, pero cuando tratamos de compilar la clase "Boing" tendremos un error como este: Can't access class autos.Toyota Class or interface must be public, in same package, or an accessible member class. import autos.Toyota; La clase "Boing" no puede acceder a la clase "Toyota", ya que esta clase esta con el nivel de acceso por defecto y se encuentran en diferentes paquetes. Para lograr nuestro cometido podemos realizar 2 cosas: incluir a las dos clases en el mismo paquete o declarar a la clase "Toyota" como pblica.
Acceso pblico:
Una clase declarada como pblica puede ser accedida desde cualquier lugar de nuestra aplicacin. No debemos olvidar que para poder acceder a una clase publica desde otro paquete tenemos que importar esta clase pblica.
Como podemos ver algunos modificadores solo se pueden aplicar a mtodos y clases otros a clases, mtodos y variables, todo esto lo veremos a continuacin. Una clase puede final abstract strictfp tener slo los siguientes modificadores de no acceso:
Estos modificadores son adicionales a los modificadores de acceso y podemos usarlos en combinacin con estos. Podemos, por ejemplo, declarar una clase como "public final". Sin embargo no siempre podemos combinar estos los modificadores de no acceso, como por ejemplo nunca debemos declarar una clase "abstract final".
nuestro
ejemplo
anterior:
public final class Toyota{ } Si ahora intentamos extender la clase "Toyota", que est marcada como "final", con la siguiente clase que tenemos en un segundo archivo: package aviones; import autos.Toyota; public class Boing extend Toyota { } Obtendremos un error como el siguiente
Can't subclass final classes: class autos.Toyota class Boing extends Toyota{ 1 error Tenemos este error ya que la clase "Toyota" tiene el modificador "final" (no puede tener subclases) y aun as la clase "Boing" est tratando de extenderla.