Fragmento de una conferencia con un mentor como parte del curso de Codegym University. Inscríbete al curso completo.


"¡Saludos, Amigo! Escuché que ya tienes una buena comprensión de los métodos".

"Hola, Rishi. Sí, ya he superado el truco de ese maestro. Diría que no fue tan malo, pero me dirás: '¡No, no! No has descubierto nada. '"

"Claramente has estado pasando demasiado tiempo charlando con ciertos profesores, probablemente con Diego. De todos modos... todavía espero que entiendas los métodos lo suficientemente bien. Después de todo, hoy te enseñaré algunas palabras mágicas que te ayudarán a delinear los métodos". ' esferas de influencia."

"Suena intrigante".

"De hecho, todo es simple. 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 el acceso 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. Aquí hay una tabla completa:

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

"Y aquí hay una explicación completa de los modificadores de acceso:

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".

"Interesante, pero no estoy seguro de poder colocar estos modificadores de inmediato en los lugares correctos.

"Llegará allí gradualmente. No necesita preocuparse por adelantado. Hasta que llegue al final de la búsqueda de la sintaxis de Java, puede usar el publicmodificador en todos sus métodos (así como en las clases y las variables de instancia). Necesitará el otros modificadores cuando empezamos a aprender activamente programación orientada a objetos".

"¿Puede explicar con más detalle 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 demasiado grande en partes y mover parte del código a métodos auxiliares. Pero, al mismo tiempo, no quiere que otros programadores llamen a estos métodos auxiliares, porque el el código correspondiente puede no funcionar correctamente".

"Así que se les ocurrieron estos modificadores de acceso. Si marca un método auxiliar con la palabra privado , entonces ningún otro código que no sea su clase puede ver su método auxiliar".

"Creo entender."

staticpalabra clave

"Hay otra palabra clave interesante. Es static. Como era de esperar, hace que los métodos sean estáticos".

"¿Qué significa eso?"

"Te contaré más sobre esto más tarde. No te preocupes. Por ahora, solo trata de recordar un par de hechos sobre los métodos estáticos.

Hecho 1. Un método estático no se adjunta a ningún objeto, sino que pertenece a la clase en la que se declara. 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".

"¿Porqué es eso?"

"Responderás esta pregunta tú mismo cuando empieces a aprender programación orientada a objetos y entiendas cómo funcionan los métodos estáticos. Hasta entonces, solo confía en mí.

throwspalabra clave

"Hay otra palabra clave que probablemente haya visto en la declaración de un 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
}

"¿Y que significa?"

"Una vez más tengo que decirte que aprenderás su verdadero propósito más adelante, cuando estudiemos las excepciones (en el Nivel 15).

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

"¡Suena misterioso e incomprensible! Tendré que esperar al Nivel 14".

método principal

"Ahora echemos un vistazo más de cerca al método principal. Ya comprende que 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. Además, afecta el tipo de resultado, el método devolverá 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 modifiersse 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 tiene una comprensión mucho mejor de lo que significan todas estas palabras en la declaración del mainmétodo:

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

"Bueno, ahora me doy cuenta de que 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()".

"¿Qué resultado main()devuelve el método?"

"¡Ninguno en absoluto! El tipo de resultado es void. Es como un tipo vacío, un marcador de posición".

"¿Qué tiene main()entre paréntesis?"

"Hmm... Resulta que el mainmétodo toma argumentos (!). Se pasan como una matriz de cadenas".

"Así es. Y el nombre del parámetro argssugiere 'argumentos' en nuestras mentes. Cuando se inicia el programa, puede pasarle argumentos: una matriz de cadenas. Estarán contenidas en la argsmatriz del main()método".

"¡Vaya! Me pregunté sobre esto cuando lo vi por primera vez, pero luego me acostumbré y comencé a escribir la lista de parámetros sin pensar".

"Todos hemos estado allí. Finalmente, Exceptionpueden ocurrir errores no controlados como (o sus descendientes) en el main()método. Lo sabemos gracias a la throws Exceptionparte de la declaración".

"Gracias, Rishi. No entendí todo, pero esto fue interesante".

"De nada. Poco a poco llegarás a comprender todos estos puntos sutiles, estoy seguro".