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 private
palabra 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 public
palabra 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 |
Sí | Sí | Sí | Sí |
protected |
No | Sí | Sí | Sí |
sin modificador | No | No | Sí | Sí |
private |
No | No | No | Sí |
"Y aquí hay una explicación completa de los modificadores de acceso:
1. public
modificador
public
Se 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. private
modificador
private
Solo 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. protected
modificador
Si un método está marcado con el protected
modificador, 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 public
modificador 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."
static
palabra 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 Solution
antes 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 main
mé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í.
throws
palabra clave
"Hay otra palabra clave que probablemente haya visto en la declaración de un método: la throws
palabra clave. A diferencia de los modificadores de acceso y la static
palabra 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 throws
palabra clave puede arrojar errores (excepciones), es decir, instancias de la Exception
clase (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
Donde access modifiers
se reemplaza por public
, protected
, private
o nada en absoluto;
si el método es estático, static
aparece la palabra clave (está ausente para los métodos no estáticos)
Type
es el tipo del valor de retorno ( void
si no hay resultado)
"Ahora tiene una comprensión mucho mejor de lo que significan todas estas palabras en la declaración del main
método:
public static void main(String[] args) throws Exception
"Bueno, ahora me doy cuenta de que el acceso al main()
método es posible desde cualquier clase, como lo indica la public
palabra 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 main
método toma argumentos (!). Se pasan como una matriz de cadenas".
"Así es. Y el nombre del parámetro args
sugiere 'argumentos' en nuestras mentes. Cuando se inicia el programa, puede pasarle argumentos: una matriz de cadenas. Estarán contenidas en la args
matriz 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, Exception
pueden ocurrir errores no controlados como (o sus descendientes) en el main()
método. Lo sabemos gracias a la throws Exception
parte 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".
GO TO FULL VERSION