Erro sobre Abstract

Olá, no código abaixo eu estou passando uma palavra com a String para a classe Integrante , até o exibeInstru, mas estou com esse erro que nunca tinha visto antes.

\Integrante.java:3: error: Integrante is not abstract and does not override abstract method exibeInstru(String) in MostraInstru
public class Integrante extends Banda implements MostraInstru {
^
.\MostraInstru.java:3: error: cannot find symbol
String instru = guitarra;
^
symbol: variable guitarra
location: interface MostraInstru
2 errors

Os códigos estão assim:

public interface MostraInstru{

String instru = guitarra;

public void exibeInstru(String instru);
}

=================================================================

public class Integrante extends Banda implements MostraInstru {

private int idade = 0;
private String instrumento = “”;

//==========================================================

public void exibeInstru(){
System.out.println("\nO instrumento usado: " +instru);

}
}

Você esqueceu de colocar guitarra entre aspas duplas ""
Aliás, você está usando essa variável do jeito errado:

 String instru = guitarra; //você não precisa dessa linha, pois você está declarando a mesma variável nos argumentos do método exibeInstru(String instru)
 
 public void exibeInstru(String instru); 

Você esqueceu o parâmetro String instru nessa implementação

Então fiz a devidas mudanças, mas agora ele apresenta outro erro em outra classe, a classe que eu uso para exibir para o usuário.

ERRO:

ShowTime.java:133: error: method exibeInstru in class Integrante cannot be applied to given types;
integran.exibeInstru();
^
required: String
found: no arguments
reason: actual and formal argument lists differ in length
1 error

classe:
public class ShowTime {

public static void main(String arg[]){

Banda b1 = new Banda();
Entrada entrada = new Entrada();
Integrante integran = new Integrante();

integran.exibeInstru();

}
}

Resolvi o erro anterior, passando String instru como parametro, mas agora, to com um erro aparentemente besta aqui, que não estou conseguindo encontrar o por que.

ERRO:

ShowTime.java:133: error: ‘)’ expected
integran.exibeInstru(String instru);
^
ShowTime.java:133: error: not a statement
integran.exibeInstru(String instru);
^
ShowTime.java:133: error: ‘;’ expected
integran.exibeInstru(String instru);
^
3 errors

CODIGO:

public class ShowTime {

public static void main(String arg[]){

Banda b1 = new Banda();
Entrada entrada = new Entrada();
Integrante integran = new Integrante();

integran.exibeInstru(String instru);

}
}

Calma, se liga nisso aqui:

    public void exibeInstru(String instru){
        System.out.println("\nO instrumento usado: " +instru);
    }

Esse método/função está usando String instru como parâmetro, né? Ok.
Tendo isso em mente, String é o tipo de dado do parâmetro e instru é a variável que vai armazenar o valor do parâmetro. Ok?
Quando você for chamar o método/função, você deve especificar o valor que essa variável deve armazenar, assim:

//chamando o método|função
integran.exibeInstru("guitarra");//guitarra é o valor da variável `instru`, ou seja, é o valor do parâmetro!

Sendo assim, quando esse metódo/função for executado, ele vai imprimir:

O instrumento usado: guitarra

1 curtida

Funcionou, muito abrigadooo!