Gyakorlati alapok III.
Öröklődés (inheritance)
Az instanceof metódus
Pontosan ebben a fejezetben kell megemlítenünk ezt a beépített függvényt,
hiszen segítségével lekérdezhetjük, hogy adott objektum melyik osztályhoz
tartozik. Ebből következően típusa a 2 állású boolean,
true kimeneti értéket adva, ha az objektum az
osztályhoz tartozik, false értéket, ha nem.
Fontos további megjegyzés, hogy az instanceof metódus az osztályhierarchiában lévő összes ősosztályt true értékkel illeti!
Például adott a már megismert és létrehozott negyzet objektumunk. Származtatásos osztályhierarchiája értelemszerűen az Object osztályból indul. Bár Sikidom osztály abstract, azaz nem példányosítható, de mégis szintén ősosztály. Azonban a hierarchiában 2 olyan osztály van, amelyik a Negyzet osztályból származnak, azaz nem ősosztályok, ezek a Teglalap és a Haromszog osztályok.
Object
↓
Sikidom
↓
Kor
↓
Negyzet
↓
Teglalap
↓
Haromszog
A metódus formai érdekessége, hogy szintaktikailag nem igazán illik az eddig tanult metódusokhoz, hiszen paraméterlistája nem zárójelezett és nem tartalmazza a névadási konvenciók egyik legfontosabbikát: a camelCase használatát; elnevezése tehát instanceOf helyett instanceof lesz.
A fentieket ellenőrizzük le az alábbi futtatható Java-kódban:
public class
Main {
public static void main(String[] args) {
Kor kor = new Kor(10);
Negyzet negyzet = new Negyzet(10);
Teglalap teglalap = new Teglalap(10, 10);
Haromszog haromszog = new Haromszog(10, 10, 10);
System.out.println(kor instanceof Kor);
System.out.println(negyzet instanceof Negyzet);
System.out.println(teglalap instanceof Teglalap);
System.out.println(haromszog instanceof Haromszog);
System.out.println();
System.out.println(negyzet instanceof Object);
System.out.println(negyzet instanceof Sikidom);
System.out.println(negyzet instanceof Kor);
System.out.println(negyzet instanceof Negyzet);
System.out.println(negyzet instanceof Teglalap);
System.out.println(negyzet instanceof Haromszog);
}
}
Végeredmény:
true
true
true
true
true
true
true
true
false
false