Por que o código não compila se eu colocar um método void em uma classe com main()?

// NÃO COMPILA, PORQUE?    
public class DesigningMethods {
     public static void main(String[] args) {
          public void walk1(){}
     }
}


// COMPILA
public class DesigningMethods{
    public void walk1(){}
}

Porque o primeiro exemplo não compila?

Ele deverá ser static também.

public static void main(String[] args){
		walk1();
	}

	public static void walk1(){
		System.out.println("ss");
	}
1 curtida

E porque alguem faria isso?

Coloca o método void fora, e no main só chama.

> public class DesigningMethods {
>      public static void main(String[] args) {
>           DesigningMethods();
>      }
> }
1 curtida

Não compila pois a sintaxe determina que métodos sejam declarados no corpo de uma classe e não no corpo de um método.
:slight_smile:

1 curtida

É apenas um estudo, só queria saber o por que, valeu. :slight_smile:

Não necessariamente deverá, pois você pode instanciar a classe e aí invocar o método a partir do objeto.

Exemplo:

public class DesigningMethods {

    public static void main(String[] args) {
        DesigningMethods objeto = new DesigningMethods();
        objeto.walk1();
    }

    public void walk1() {
        System.out.println("Funciona");
    }
}
1 curtida

Agora sim ficou claro pra mim, valeu. :+1:

1 curtida