Classe Abstrata

1) Contrua uma classe abstrata IntrumentoMusical com um método abstrato tocar( ). Contrua 2 classes violao e Sax que implementam essa classe e faça a seguinte chamada abaixo no ProgramaPrincipal.

InstrumentoMusical sax = new Sax();

//implementação do método abstrato tocar

sax.tocar();

InstrumentoMusical violao = new Violao();

//implementação do método abstrato tocar

violao.tocar();

Saida:
Tocando Sax…

Tocando Violão...

Alguem me ajuda neste exercicio??

Pô, o primeiro e já tá pedindo ajuda?

Cria uma classe abstrata e chama ela em outra classe ué
Depois é só chamar o método dela.

  1. Faz tua classe abstrata
  2. Cria outra classe, normal mesmo
  3. Instancia tua classe abstrata lá
  4. Chama o método a partir da tua instância
suaClasseAbstrata suaClasse = new suaClasseAbstrata();
suaClasse.seuMetodo();

Challenge complete.

Bom, como se trata de uma classe abstrata, lembre-se, classes abstratas foram criadas para não serem instanciadas e sempre herdadas por tipos concretos.

No mais, ao amigo que pediu ajudam, o exercício tem alguns passos bem claros que dá pra fazer antes de pedir ajuda :wink:

Realmente tente, é por aí que o processo de aprendizado se fortalece.

Boa tarde Chaybelucas
Conseguir desenvolver, porem está acontecendo um erro que não estou entendendo… Se você puder me ajudar…

Criei a classe abstrata InstrumentoMusical:

public abstract class InstrumentoMusical {
	public static void main(String[] args){
		InstrumentoMusical sax = new Sax();
    sax.tocar();
		
		InstrumentoMusical violao = new Violao();
		violao.tocar();
	}

}

Logo em seguida… Criei duas classes
Sax:

public class Sax extends InstrumentoMusical{
	public void tocar(){ 
		System.out.println("Tocando Sax...");
	}
}

Violao:

public class Violao extends InstrumentoMusical{
	public void tocar(){ 
		System.out.println("Tocando Violao...");
	}
}

E esta acontecendo um erro no metodo tocar na classe InstrumentoMusical

Pelo que entendi, você deveria criar 4 classes:
1 - A classe abstrata InstrumentoMusical
2 - A classe Sax
3 - A classe Violao
4 - Uma classe para testar, com o método main, onde você iria instanciar dois objetos, um de sax e outro de violão e, a partir deles, invocar os métodos tocar.
Entendi errado?

Então pelo o que eu entendi são apenas 3 classes…
A Classe abstrata Instrumento Musical
Classe Sax
Classe Violão

Porem a invocação do metodo esta dando errado na Classe Instrumento Musical

Galera duvida resolvida!!!
São 4 classes
Classe abstrata: InstrumentoMusical
ProgramaPrincipal
Sax
Violao

O teu problema não estava no número de classes, com 3 ou com 4 funcionaria da mesma forma. O teu problema era a falta de declaração do método tocar na classe InstrumentoMusical

public abstract tocar();

Faltou o tipo de retorno.

public abstract void tocar();

:slight_smile:

Só lembrando que o método tocar() tb pode ser concreto e fazer o override nas subclasses.