Modificadores de acceso – Default

El siguiente modificador de acceso sera Default, algo enredoso, pero muy valioso de tener en cuenta.

Como veremos a continuacion este modificador va de la mano con el paquete al cual pertenece la clase.

Escenario – Declaracion en la clase

  1. Pueden existir un sin fin de clases con el declarador de acceso por defecto pero solo una puede existir una clase publica
  2. ClasePublica.java

    package mipaquete;
    
    public class ClasePublica{
    }
    
    class OtraClase{
    }
    
    class OtraClaseNoPublica{
    }
  3. Puede referenciarse desde clases dentro mismo paquete
  4. OtraClasePublica.java

    package mipaquete;
    
    public class OtraClasePublica {
    	public void invocar(){
    		OtraClase clase = new OtraClase();
    	}
    }
  5. Puede heredarse por clases dentro mismo paquete
  6. ClaseHijaPublica.java

    package mipaquete;
    
    public class ClaseHijaPublica extends OtraClase{
    
    }
  7. No puede referenciarse desde clases de distintos paquetes.
  8. OtraClasePublica.java

    package otropaquete;
    
    import mipaquete.ClasePublica;
    
    public class OtraClasePublica {
    	public void invocar(){
    		OtraClase clase = new OtraClase();
    	}
    }

    OtraClasePublica.java:3: mipaquete.OtraClase is not public in mipaquete; cannot
    be accessed from outside package

  9. No puede heredarse por clases de distintos paquetes.
  10. ClaseHijaPublica.java

    package otropaquete;
    
    import mipaquete.OtraClase;
    
    public class ClaseHijaPublica extends OtraClase{
    }
    }

    ClaseHijaPublica.java:3: mipaquete.OtraClase is not public in mipaquete; cannot
    be accessed from outside package

Como resumen cuando omitamos el operador, y sea aplicado el operador por defecto tendremos que siempre mirar al paquete que pertenece la clase.