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.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

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