Considere as seguintes classes em Java: public class Calculadora { public int somar(int x, int y) { return x + y; } } public class Principal { public static void main(String[] args) { int a = 10; int b = 5; int resultado = Calculadora.somar(a, b); System.out.println("O resultado da soma é: " + resultado); } } Qual será a saída ao executar o método main da classe Principal?
Questão
Considere as seguintes classes em Java:
public class Calculadora { public int somar(int x, int y) { return x + y; } }
public class Principal { public static void main(String[] args) { int a = 10; int b = 5; int resultado = Calculadora.somar(a, b); System.out.println("O resultado da soma é: " + resultado); } }
Qual será a saída ao executar o método main da classe Principal?
Alternativas
A) O código imprimirá: "O resultado da soma é: 15".
B) O código não compila devido a uma tentativa de acesso a uma variável não inicializada.
C) O código imprimirá: "O resultado da soma é: 105".
D) O código imprimirá: "O resultado da soma é: Calculadora@hashcode".
E) O código não compilará devido a um erro na chamada do método somar.
Explicação
-
Na classe , o método foi declarado como método de instância (não possui a palavra-chave
static). Isso significa que ele só pode ser chamado a partir de um objeto (instância) deCalculadora. -
No
mainda classePrincipal, a chamada foi feita assim:
int resultado = Calculadora.somar(a, b);
Essa forma tenta chamar somar como se fosse método estático (isto é, pertencente à classe), mas ele não é static.
-
Portanto, ocorrerá erro de compilação do tipo (mensagem típica): “non-static method somar(int,int) cannot be referenced from a static context”.
-
Para compilar, seria necessário criar um objeto, por exemplo:
Calculadora calc = new Calculadora();
int resultado = calc.somar(a, b);
Alternativa correta: (E).