1. Modificadores de acceso

Antes de cada método, los programadores pueden especificar los llamados modificadores de acceso. Estos incluyen las siguientes palabras clave: public, protected, private.

Estos modificadores de acceso le permiten restringir el acceso de otras clases a un método.

Por ejemplo, si escribe la privatepalabra clave antes de la declaración de un método, solo se puede llamar al método desde la misma clase en la que se declara. La publicpalabra clave permite acceder al método marcado desde cualquier método de cualquier clase.

Hay un total de 3 de estos modificadores, pero hay 4 tipos de acceso a un método. Esto se debe a que la ausencia de un modificador de acceso también significa algo.

Acceso desde...
modificadores Cualquier clase clase infantil su paquete su clase
public
protected No
sin modificador No No
private No No No

1. publicmodificador

publicSe puede acceder a un método (o variable, o clase) marcado con el modificador desde cualquier parte del programa . Este es el grado más alto de apertura: no hay restricciones.

2. privatemodificador

privateSolo se puede acceder a un método (o variable o clase) marcado con el modificador desde la misma clase donde se declara . Para todas las demás clases, el método marcado (o variable) es invisible. Es como si no existiera. Este es el nivel más alto de restricción, solo su propia clase.

3. Sin modificador (modificador predeterminado)

Si un método (o variable) no está marcado con ningún modificador, se considera que tiene el 'modificador predeterminado'. Las variables o métodos con ese modificador (es decir, sin ninguno) son visibles para todas las clases en el paquete en el que se declaran . Y solo a ellos. Este modificador también se denomina a veces package-private, lo que sugiere que el acceso a variables y métodos está abierto para todo el paquete en el que se encuentra su clase.

4. protectedmodificador

Si un método está marcado con el protectedmodificador, se puede acceder a él desde la misma clase, el mismo paquete y descendientes (clases que heredan la clase en la que se declara el método). Analizaremos este tema con más detalle en la búsqueda de Java Core.

Puede usar el publicmodificador en todos sus métodos (así como en todas sus clases y variables de clase) hasta que llegue al final de la búsqueda de sintaxis de Java. Necesitará los otros modificadores cuando comencemos a aprender activamente OOP.

¿Por qué se necesitan modificadores de acceso?

Se vuelven necesarios para grandes proyectos escritos por decenas y cientos de programadores al mismo tiempo.

A veces hay situaciones en las que un programador quiere dividir un método excesivamente grande en partes y mover parte del código a métodos auxiliares. Pero al mismo tiempo, él o ella no quiere que otros programadores llamen a estos métodos auxiliares, porque es posible que el código correspondiente no funcione correctamente.

Así que se les ocurrió estos modificadores de acceso. Si marca un método auxiliar con la palabra private , ningún otro código que no sea su clase podrá ver su método auxiliar.



2. staticpalabra clave

La staticpalabra clave hace que un método sea estático. Veremos lo que eso significa más tarde. Por ahora, recuerde un par de datos sobre los métodos estáticos.

Hecho 1. Un método estático no está adjunto a ningún objeto , sino que pertenece a la clase en la que está declarado. Para llamar a un método estático, debe escribir:

ClassName.MethodName()

Ejemplos de métodos estáticos:

Nombre de la clase Nombre del método estático
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

El nombre de la clase antes del nombre de un método estático se puede omitir si llama al método estático desde dentro de su clase. Es por esto que no es necesario escribir Solutionantes de los nombres de cada uno de los métodos estáticos que se llaman.

Hecho 2. Un método estático no puede acceder a los métodos no estáticos de su propia clase. Un método estático solo puede acceder a métodos estáticos. Como resultado, declaramos todos los métodos que queremos llamar desde el mainmétodo estático.

¿Por qué? Podrá responder esta pregunta usted mismo cuando comience a aprender programación orientada a objetos y comprenda cómo funcionan los métodos estáticos.



3. throwspalabra clave

Hay otra palabra clave que probablemente haya visto en una declaración de método: la throwspalabra clave. A diferencia de los modificadores de acceso y la staticpalabra clave, esta palabra clave se coloca después de los parámetros del método:

public static Type name(parameters) throws Exception
{
  method body
}

Consideraremos su significado preciso un poco más adelante cuando estudiemos las excepciones.

Pero para tocarlo superficialmente, podemos decir que un método marcado con la palabra clave throws puede arrojar errores (excepciones), es decir, instancias de la Exception clase (y las clases que la heredan). Si pueden ocurrir varios tipos diferentes de errores en una clase, debe enumerar cada uno de ellos separados por comas.


4. mainmétodo

La línea donde se declara un método, que contiene todos los modificadores, afectará cómo se llama a este método desde otras clases y métodos. Afecta el tipo de resultado que devolverá el método e indica qué errores son posibles mientras se ejecuta.

Tal línea se llama declaración de método y tiene el siguiente formato general:

access modifier static Type name(parameters) throws exceptions
Formato general de una declaración de método

Donde access modifiers se reemplaza por public, protected, privateo nada en absoluto;

si el método es estático, staticaparece la palabra clave (está ausente para los métodos no estáticos)

Typees el tipo del valor de retorno ( voidsi no hay resultado)

Ahora probablemente entienda lo que significan todas las palabras clave en la declaración del mainmétodo:

public static void main(String[] args) throws Exception
Declarando el mainmétodo

El acceso al main()método es posible desde cualquier clase, como lo indica la publicpalabra clave.

El método es estático, por lo que se puede llamar explícitamente como Solution.main().

El mainmétodo no devuelve ningún resultado. El tipo de retorno es void(sin tipo).

El mainmétodo toma argumentos (!): una matriz de cadenas. Y el nombre del parámetro argssugiere 'argumentos' a nuestras mentes. Cuando se inicia el programa, puede pasarle argumentos: una matriz de cadenas. Estarán contenidos en la args matriz en el main()método.

Pueden ocurrir errores no controlados como Exception(o sus descendientes) en el main()método.