Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] Duda

Tengo una duda si escribo el código de esta manera lo ejecuta bien.

public class Flujo {
    
    public static void main(String[] args) {
        System.out.println("Inicio main");
        metodo1();
        System.out.println("Fin main");
      }
    
      public static void metodo1() {
        System.out.println("Inicio metodo1");
        metodo2();
        System.out.println("Fin metodo1");
      }
      
      public static void metodo2() {
        System.out.println("Inicio metodo2");
        for (int i = 1; i <= 5; i++){
          System.out.println(i);
        }
        System.out.println("Fin metodo2");
      }
      
}

más no de esta manera

public class Flujo {
    
        private static void main(String[] args) {    // obviamente se entiende por el private
        System.out.println("Inicio main");
        metodo1();
        System.out.println("Fin main");
      }
    
      public static void metodo1() {
        System.out.println("Inicio metodo1");
        metodo2();
        System.out.println("Fin metodo1");
      }
      
      public static void metodo2() {
        System.out.println("Inicio metodo2");
        for (int i = 1; i <= 5; i++){
          System.out.println(i);
        }
        System.out.println("Fin metodo2");
      }
      
}

Pero porque aquí sí lo imprime?

public class Flujo {
    
    public static void main(String[] args) {
        System.out.println("Inicio main");
        metodo1();
        System.out.println("Fin main");
      }
    
      private static void metodo1() {         // se cambio de public  a private
        System.out.println("Inicio metodo1");
        metodo2();
        System.out.println("Fin metodo1");
      }
      
      private static void metodo2() {       // se cambio de public  a private
        System.out.println("Inicio metodo2");
        for (int i = 1; i <= 5; i++){
          System.out.println(i);
        }
        System.out.println("Fin metodo2");
      }
      
}

Tal vez estoy dejando que se me pase algo por alto. Saludos Comunidad

2 respuestas
solución!

Hola Erick, ¡espero que estés bien!

En lo primero código tienes los métodos públicos entonces se queda bien.

En el segundo código tienes el método main privado y el flujo de los métodos es: main usa el método 1 y el método 1 usa el método 2, sin embargo, no puedes acceder un método privado sin usar un método público, por lo tanto que no puede acceder el main (el punto de entrada para la ejecución de un programa) y tu código no ejecuta bien.

Al fin, el tercero código tienes lo mismo flujo pero ahora main es público, y los otros métodos son privados. Está bueno porque es posible acceder métodos privados por medio de un método público (el main, en ese caso).

La cuestión principal es cuándo utilizar el modificador de acceso privado, porque por ejemplo si quiere que los métodos 1 y 2 sean privados, eso significa que solamente métodos de la misma clase pueden acceder a estos métodos privados.

El método main en Java se utiliza como el punto de entrada para la ejecución de un programa. Es el método que se ejecuta cuando se inicia una aplicación Java y es llamado por el entorno de ejecución de Java.

El método main debe tener un modificador de acceso public para que el entorno de ejecución pueda acceder y llamar a este método. Si se declara como private, el entorno de ejecución no tendría acceso a él y no podría iniciar la ejecución del programa.

El modificador de acceso public indica que el método es accesible desde cualquier otra clase o contexto. Al declarar el método main como public, se permite que el entorno de ejecución de Java acceda y ejecute el método cuando se inicia la aplicación.

Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte. ¡Un saludo!

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Agradezco la aclaración!