//Klasse som utvider den abstrakte klassen FantasiSkapning.
class Drage extends FantasiSkapning{
String navn;
int stoerrelse;
int meterOverHavet;
/* Overloading ------------------------------------------------------------------- */
//Naar vi har flere versjoner av en metode med forskjellige paramtere
//Altsaa to metoder med samme navn men tar inn forskjellige argumenter.
//konstruktoer hvor vi ikke trenger aa spesifisere noen verdi.
public Drage(){
navn = "Freddy";
meterOverHavet = 0;
stoerrelse = 20;
}
//konstruktoer hvor vi maa inkludere tre argumenter
public Drage(String n, int moh, int st){
navn = n;
meterOverHavet = moh;
stoerrelse = st;
}
//Metode som ikke krever noe argument.
public void fly(){
meterOverHavet += 100;
}
public void fly(int hoeyde){
fly();
meterOverHavet += hoeyde;
}
/* ------------------------------------------------------------ */
//"Geter" (hente metode)
public int hentMoH(){
return meterOverHavet;
}
//@Override er ikke noedvendig for aa kompilere eller kjoere koden.
//MEN det hjelper oss aa passe paa at vi faktisk overskriver en metode slik vi forventer
//Her overskriver vi metoden lagLyd() fra FantasiSkapning.
@Override
protected void lagLyd(){
System.out.println("Rawr. Skummel drage.");
}
//Overskriver tramp() fra FantasiSkapning.
@Override
protected void tramp(){
if(meterOverHavet > 0){
System.out.println("For hoeyt til aa naa bakken.");
}
else{
System.out.println("Tramper som en drage.");
//super.tramp();
}
}
//Overskriver toString metoden som ALLE objekter arver til vanlig.
//Vanligvis vil denne metoden bare returnere klassenavnet og minneplass.
@Override
public String toString(){
return ("Hei jeg er en drage og jeg heter: " + navn);
}
//Overskriver equals metoden som alle objekter arver til vanlig.
//Vanligvis ser bare java om de to objektene er like.
//Her omdefinerer vi equals slik at den ser om det andre objektet er en Drage, og om det har samme navn.
//Ellers return false.
@Override
public boolean equals(Object o){
if(o instanceof Drage){
Drage andreDrage = (Drage) o;
if(navn == andreDrage.navn){
return true;
}
else{
return false;
}
}
else{
return false;
}
}
}