class Oppgave1{ public static void main(String[] arg){ /* Klasser: Person Voksen arver fra Person // Barn arver fra Person // Student arver fra Voksen */ // Oppretter ett objekt av hver klasse Person person = new Person(); Voksen voksen = new Voksen(); // Barn barn = new Barn(); // Student student = new Student(); // Hva skjer? Voksen voksenpeker = voksen; Person personpeker = voksenpeker; // Dette går fint. Kompilatoren klarer å caste voksenpekeren til en personpeker på egenhånd // Nullstiller pekerne voksenpeker = null; personpeker = null; // Hva skjer? // personpeker = person; // voksenpeker = personpeker; // Dette går ikke fordi klassen Voksen arver fra Person, og pekere kan ikke peke "oppover" i klassehierarkiet // Nullstiller pekerne personpeker = null; voksenpeker = null; // Hva skjer? // personpeker = voksen; // voksenpeker = personpeker; // Dette går ikke uten hjelp. Kompilatoren klager og vi må caste // personpekeren til en voksenpeker før vi kan lagre den i variabelen voksenpeker // Her demonstrerte vi både casting: // voksenpeker = (Voksen) personpeker; // og bruk av instanceof for å sjekke hva slags type objekt som er lagret i en peker personpeker = voksen; if (personpeker instanceof Voksen){ voksenpeker = (Voksen) personpeker; } else (personpeker instanceof Barn){ // her kunne vi lagret en referanse til objektet i en barnepeker for eksempel } } }