A Java és a C# nyelvhez hasonlóan a nyelv teljes egészében osztály alapú.
Az osztályok tagjaira ugyanazok a láthatósági szabályok érvényesek, mint az osztályokra.
Konstansok: Az osztály konstans változói. Értékük nem változhat futási időben.
Konstruktorok: A konstruktor egy speciális metódus, amit az egy példányának létrehozásához és inicializálásához használunk. Az Oxygene név nélküli konstruktorokat használ. Lehetőség van konstruktorok túlterhelésére is azaz különböző paraméterű konstruktorokat adhatunk meg. Példák:
Ezenk kívül létezik egy speciális konstruktor is az osztály konstruktor. Ez akkor hívódik meg, amikor az osztály első példányát létrehozzuk. Ez nem túlterhelhető és paraméter nélküli. Példa:
Sokszor első művelet egy osztály létrehozásakor – objektum bizonyos mezőinek beállítása. Pl.:
Oxygen lehetőséget nyújt arra, hogy ezeket a „nevesített paraméterek” konstruktor paraméterei után helyezzünk el megfelelő beállítandó értékkel ellátva:
Események (events): Az Oxygene lehetőséget biztosít saját események létrehozására is.
Vagy részletesen kiírva:
Egy esemény 3 műveletet támogat: add, remove raise. Alapértelmezetten fordító generálja a műveletekhez tartozó metódusokat. De szükség esetén ezek helyettesíthetőek (raise nyelv 3. verziótól kezdve helyettesíthető) saját metódusokkal. Pl.:
Adatmezők (fields): Olyan változók, amiket az osztály példányai közösen használnak.
Destruktorok: Az Oxygene tartalmaz szemétgyűjtést, azonban lehetőség van destruktor írására is. Erre szolgál a "finalizer" kulcsszó. Példa:
Ha egy osztály külső forrásokat is használ (pl. adatbázis), akkor Microsoft ajánlja, hogy következő mintát használjuk megírásakor:
Bejárók (iterators): Ennek segítségével az osztály egy metódusa úgy viselkedik, mint egy bejárható adatszerkezet. Példa: (négyzetet számol az adott intervallumon):
Tulajdonságok (properties): Egy adattagot vagy metódust tudunk elérni és módosítani vele. Segítségével szabályozni tudjuk az adattag írását és olvasását. Pédául:
Ahogyan a példából is látható read, elletve write kulcsszavak segítségével rendelünk hozzá egy műveletet egy tulajdonság olvasásához, illetve írásához. Ha valamelyik műveletet nem akarjuk megengedni, akkor hozzá tartozó kulcsszót nem írunk hozzá. Pl.:
read kulcsszó után egy kifejezés is állhat. Pl.:
Metódusok: az osztály eljárásai illetve, ha van visszatérési értékük, akkor függvényként is viselkedhetnek. Itt is lehet definiálni láthatóságokat, amik megegyeznek az osztály láthatóságaival. Van lehetőség túlterhelésre is, amit az "override" kulcsszóval jelezhetünk de nem kötelező. Szintaxis:
Beágyazott metódusok (Nested Methods)
Az Oxygene lehetőséget ad egymásba ágyazott metódusok definiálására, ekkor a beágyazott metódus anonim metódushoz hasonlóan elérheti lokális változókat és paramétereket, de bármilyen változó megváltoztatás kiterjed a fő metódusra is.
Műveletek (operators)
Lehet saját műveleteket készíteni illetve a meglévőket felüldefiniálni.Pl.:
Abstract Classes: egy vagy több absztrakt metódusa van. Nem lehet belőle konkrét példányt létrehozni.
Partial Classes: Ez egy olyan osztály, amit több különböző fájlban valósítunk meg.
Sealed Classes: nem lehet belőle származtatni.
Static Classes: csak statikus tagjai vannak (amelyeket az osztály egy példánya nélül is lehet használni). Konkrét példányt nem is lehet belőle létrehozni.
Ezek olyan típusú osztályok, amik bárhonnan elérhetőek. Ennek engedélyezését külön be kell állítani fordítás előtt.
Az interfész az egy szerződés, ami előír bizonyos műveleteket és tulajdonságokat. Az a struktúra vagy osztály, ami megvalósítja ezt a szerződést meg kell valósítani a szerződésben leírt tuladonságokat. Egy osztály több interfészt is megvalósíthat.Ez a többszörös öröklődést pótolja valamilyen szinten. Az interfésznek nem lehet konkrát páldényát létrehozni.