/* B E S C H R E I B U N G

Diese Version unterscheidet sich von der Vorgängerversion durch:
 
1)
Klasse Nutztier ist abstract
*/


public class MainPolymorphie31 {
	public static void main(String[] args) {
		double zufall;
		int i;
		String str;		
		Nutztier nutztiere[];
		nutztiere = new Nutztier[2];

		for(i=0;i<2;i++){
			zufall = Math.random();
			if (zufall<0.5){
				nutztiere[i] = new Henne("ute", 3.14);			
			}
			else{ 
				nutztiere[i] = new Kuh("Elsa", 18);
			}
		}

		for(i=0;i<2;i++){
			str = nutztiere[i].getTierlaut();
			System.out.println("Das Tier schreit: " + str);			
		}
	}
}

abstract class Nutztier{
	// Name des Tiers
	private String name;
	
	public Nutztier(String pName){
		name = pName;
	}
	
    abstract public String getTierlaut();
}

class Kuh extends Nutztier{
	private int alter;
    public Kuh(String pName, int pAlter){
    	super(pName);
    	alter = pAlter;
    }

    public String getTierlaut(){
        return("muuhh");
    }
} 


class Henne extends Nutztier{
	private double gewicht;
    public Henne(String pName, double pGewicht){
    	super(pName);
    	gewicht = pGewicht; 
    }

    
    public String getTierlaut(){
      return("goaaag");
    }
}
