Sto tentando di utilizzare l'ereditarietà in modo da poter eseguire correttamente il codice contenuto nella classe di test. Non sono sicuro di come implementare una classe astratta o un'interfaccia chiamata Bagno con il metodo goPee(). Sai come codificarlo?Utilizzo dell'ereditarietà, perché goPee() non è definito nella mia classe di test?
Se aggiungo una classe astratta o un'interfaccia e le aggiungo alla classe Human tramite estensioni o implementazioni rispettivamente, mi viene sempre chiesto di scrivere l'implementazione nella classe Human per il metodo goPee(), che non desidero da fare, poiché la mia implementazione del metodo goPee() è scritta nelle classi Bambino maschio e femmina.
import java.util.ArrayList;
class Human
{
private String name;
public Human (String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void eat()
{
System.out.println(name + " went to fridge.");
}
}
class Male extends Human
{
public Male(String name)
{
super(name);
}
public void goPee()
{
System.out.println(getName() + " stood up.");
}
}
class Female extends Human
{
public Female(String name)
{
super(name);
}
public void goPee()
{
System.out.println(getName() + " sat down.");
}
}
public class TestHuman
{
public static void main(String[] args)
{
ArrayList<Human> arr = new ArrayList<Human>();
arr.add(new Male("john"));
arr.add(new Female("sally"));
for (int count = 0; count < arr.size(); count++)
{
arr.get(count).eat();
arr.get(count).goPee();
}
}
}
So come codificarlo. Che cosa hai provato? Quali sono i tuoi pensieri? – Jeffrey
Bene +1 per farmi dare un'occhiata alla domanda. –
Tutto il tuo codice sa che hai a che fare con un elenco che contiene oggetti 'Human'. Pertanto, ti è permesso di trattare con membri di Human. Il tuo metodo desiderato non è su Human. Vedi il problema? –