Herança Múltipla(?) em Java - Dúvida

Bom dia pessoal! meu professor colocou em sua lista o seguinte exercício:

Crie classes Humano, Inseto e SuperHeroi. A classe Humano possui atributos Nome, Sexo, Idade, Lingua e Etnia, todos especificados como protected. A classe Inseto possui atributos Nome, Venenoso, Alado, Ferrao (os três últimos são boolean), todos também especificados como protected. A classe SuperHeroi herda das duas classes anteriores, e adiciona os atributos Codinome, Trauma e Poderes. Os atributos não possuem getters e setters. Crie a hierarquia de herança um construtor e um método print (utilize o toString) na subclasse.

como implementar este exercício? não tenho muita ideia em como fazê - lo pois estou começando ainda… até pensei que este enunciado está errado por java não possuir herança multipla de classes… alguem pode me dar uma luz? tem muitos na lista parecidos com este, preciso só saber como fazer este para conseguir fazer os outros…agradeço desde já

comecei a implementar desta forma:

public class Humano {
protected String nome;
protected char sexo;
protected int idade;
protected String lingua;
protected String etnia;

public Humano(String nome, char sexo, int idade, String lingua, String etnia) {
	this.nome = nome;
	this.sexo = sexo;
	this.idade = idade;
	this.lingua = lingua;
	this.etnia = etnia;
	
}

public String getnome() {
	return nome;
}

public char getsexo() {
	return sexo;
}

public int getidade() {
	return idade;
}

public String getlingua() {
	return lingua;
}

public String getetnia() {
	return etnia;
}

public String toString() {
return getnome()+" “+getsexo()+” “+getidade()” “+getlingua()+” "+getetnia();
}

}

public interface Inseto {

String obternome();
boolean obterveneno();
boolean obterasa();
boolean obterferrao();

}

public class Hero extends Humano implements Inseto {
String codinome;
String trauma;
String poderes;

public Hero(String nome, char sexo, int idade, String lingua, String etnia, String codinome, String trauma, String poderes) {
	super(nome, sexo, idade, lingua, etnia);
	this.codinome = codinome;
	this.trauma = trauma;
	this.poderes = poderes;
}

public String obternome() {
	return "Abelha";
}

public boolean obterveneno() {
	return true;
}

public boolean obterasa() {
	return true;
}

public boolean obterferrao() {
	return true;
}

public String toString() {
	return super.toString()+codinome+trauma+poderes+obternome()+obterveneno()+obterasa()+obterferrao();
}

}

public class driver {
public static void main(String[] args) {
Hero homemabelha = new Hero(“jose”, ‘M’, 57,“portuguesa”, “BR”,“homem abelha”, “nenhum”,"nenhum ");
homemabelha.toString();
}

}

compila, mas não aparece nada… acredito que seja no metodo toString e tem outras coisas erradas em relação ao “Protected” do enunciado tbm…

Em Java, a herança múltipla se resolve usando herança de interfaces e composição de classes.

Quem não está acostumado com essa forma de desenvolvimento, vai achar trabalhoso, mas na prática torna o código mais reutilizável e de fácil manutenção eliminando o acoplamento forte que é causado pela herança de classes.

Crie as interfaces Humano e Inseto e duas classes que serão a implementação padrão dessas duas interfaces.

Crie uma interface SuperHeroi que estende as interfaces Humano e Inseto.

Crie uma implementação para essa classe contendo dois atributos privados, um do tipo Humano e outro do tipo Inseto.

Os métodos pertinentes à interface Humano vão delegar as chamadas ao atributo do tipo Humano.

Os métodos pertinentes à interface Inseto vão delegar as chamadas ao atributo do tipo Inseto.

Tenta implementar dessa forma e vai postando as dúvidas.

Dicas:

Utilize o padrão camel case ao escrever nomes de métodos, isto é, começando com letra minúscula e cada palavra no meio do nome do método começando em maiúsculo.

Métodos que retornam o valor de um atributo não boolean costumam começar com get. Exemplo: getNome()

Métodos que retornam o valor de um atributo boolean costumam começar com is. Exemplo: isVenenoso(), isAlado()

1 curtida

Boa… vou tentar

consegui! muito obrigado!