class SuperK {
void skrivMelding() {
System.out.println("Melding fra super!");
}
}
class SubK extends SuperK {
int id = 0;
@Override
void skrivMelding() {
System.out.println("Melding fra sub!");
}
void unikMelding() {
System.out.println("Hemmelig kode fra sub!");
}
}
// Enhetsteste, modulasiere testen?
public class Casting {
public static void main(String[] args) {
// N?r blir instanceof false?
// Superklasse
SuperK superObj = new SuperK();
if (superObj instanceof SuperK) { // * 1 N?r blir instanceof false?
System.out.println("Objektet er en instans av SuperK");
}
if (superObj instanceof SubK) { // * 2 N?r blir instanceof false?
System.out.println("Objektet er en instans av SubK");
}
// Implisit casting til subklasse
SuperK obj = new SubK();
obj.skrivMelding();
if (obj instanceof SuperK) { // * 3 N?r blir instanceof false?
System.out.println("Objektet er en instans av SuperK");
}
if (obj instanceof SubK) { // * 4 N?r blir instanceof false?
System.out.println("Objektet er en instans av SubK TEST");
obj.skrivMelding();
// obj.unikMelding();
}
// Eksplisit casting til subklasse
SubK castetPeker = (SubK) obj;
castetPeker.skrivMelding();
// SuperK castetPeker = (SubK) obj;
if ( castetPeker instanceof SuperK) { // * 5 N?r blir instanceof false?
System.out.println("Objektet er en instans av SuperK");
}
if ( castetPeker instanceof SubK) { // * 6 N?r blir instanceof false?
System.out.println("Objektet er en instans av SubK");
System.out.println(castetPeker.id);
}
}
}