Az alapvető egység a nyelvben az osztály. Osztálydeklarációt a kódban bárhol elhelyezhetünk. A tulajdonságok (változók) deklarálása a property kulcsszóval lehetséges. A global kulcsszóval biztosíthatjuk, hogy az osztály páldányai azon a változón osztozzanak (mint C++ static kulcsszava). Természetesen kezdeti értéket is adhatunk a változóknak.
Egy adott osztály objektumait konstruktorok segítségével hozzuk létre, és destruktorral semmisítjük meg. A nyelvben ezeket a construct és destruc nevű metódusokkal valósíthatjuk meg. A konstruktorokat is túl lehet terhelni, visszatérési értékük nincs. Amennyiben egy ősosztály konstruktorát akarjuk meghívni, akkor a ősosztály|__construct__(...) metódust kell használnunk.
Lehetőségünk van csomagok írására is. Ily módon az összetartozó osztályokat és műveleteket egy külön egységbe zárhatunk, jelen esetben egy másik fájlba. Ha használni akarjuk, akkor azt az import kulcsszóval tehetjük meg. Nézzünk egy egyszerű példát:
A fenti kódot mentsük el a Greetings.kt néven a CommonSayings könyvtárba. Ekkor bármely más Kite kódból hivatkozhatunk rá úgy, mint CommonSayings.Greetings.
A fenti esetben feltettük, hogy a könyvtárstruktúránk az alábbi:
./CommonSayings/
./CommonSayings/Greetings.kt
./test.kt
Viszont abban az esetben, ha ez nem így van, kicsit másképp kell kezelni az használni kívánt
csomagot. A virtuális gép keresője segítségével már sokkal általánosabban kezelhetjük ezt a problémát:
Az objektumokat a make kulcsszóval hozzuk létre explicit módon. Amennyiben operátorokat használunk objektumokon (pl: két szám összeadása), azok implicit módon létrejönnek. Sajnos a nyelv nem támogatja az adatrejtés elvét.
Egy osztályt több objektum is példányosíthat. Objektumpéldányt bárhol deklarálhatunk a programban. Minden példány rendelkezik saját adatterülettel, a metódusokat azonban közösen használják. Azt hogy az adott metódus éppen melyik példányon fejti ki hatását, a metódus nem látható this paramétere mutatja.
A nyelv különbséget tesz az objektum metódusainak hívása és változóinak elérése közt. A metódusokat a | (pipe) jellel hívhatjuk meg, a változókat pedig . -tal.
Minden objektum automatikusan megkapja az type metódust és az is/isof operátorokat. Ezek segítségével meghatározhatjuk a kívánt objektum típusát. A type metódus egy stringként adja vissza az osztály nevét.
Az is operátor boolean értéket ad vissza aszerint, hogy a két objektum típus megegyezik-e. Az isof szintén objektumok típusait hasonlítja össze, viszont a származásukra figyel.
Minden osztálynak egy közös őse van, ez pedig a System.object. A származtatott osztály az ősosztály minden tuladjonságát örökli, ezeket azonban felül tudjuk definiálni. A nyelv a from kulcsszóval jelöli a származtatott osztályokat. A többszörös öröklődés nem támogatott.
Kidolgozásra vár.
A nyelv jelenleg nem támogatja az interfészek használatát.