Keresés

Új hozzászólás Aktív témák

  • Karma

    félisten

    válasz bundli #7899 üzenetére

    Azt befolyásolja, hogy az adott osztályt a kód többi része elérheti-e, vagy sem. Az OOP-ben alapvető az, hogy az osztályok elrejtsék a belsőségeiket private/protected tagokkal - hiszen az az ő felelősségük, másnak nincs hozzá köze -, az osztályok láthatósága ugyanezt valósítja meg eggyel magasabb szinten.

    Az alapértékek egyébként Java esetében package, C# esetében internal, ha egy külső (azaz nem másik osztály belsejében definiált) osztályról van szó. Belső osztályok esetén private mindkét nyelven.

    hunfatal: ha már megelőzdél, korrigálnék is egy kört.

    A C# internal kulccszó egyáltalán nem ezt jelenti. Az így megjelölt osztályok az assemblyn belül mindenkinek elérhetőek, azaz közelebb áll a publichoz, mint a Java package-hez.

    Javaban a static belső osztály teljesen mást jelent.

  • fatal`

    titán

    válasz bundli #7899 üzenetére

    Java:

    default (nem írod ki): Package láthatóság, az osztály csak az adott csomagon belül lesz látható.
    private: Ha nem inner class, akkor ennek semmi értelme (nem is tudom a fordító engedi-e egyáltalán), mert nem tudod használni.
    public: Bárhonnan látszik az osztály.
    final (ez a többi mellé jöhet módosítóként): Az osztályból nem lehet származtatni.

    C# (lehet, hogy pár dolog itt kimarad):

    default (nem írod ki): Ugyanaz, mint az internal.
    internal: Assemblyn belül látszódik az osztály.
    public: Bárhonnan látszik
    sealed (a fentiek mellé jöhet módosítóként: Nem lehet az osztályból származtatni.
    static: Ez igazából csak egy jelzés a fordítónak, ha ez a kulcsszó kint van az "osztály" előtt, akkor a fordító csak statikus adattagokat és függvényeket engedélyez.

    Ezenkívül mindkét nyelvben van abstract kulcsszó. Abstract osztálynak lehetnek absztrakt függvényei, ezeknek nincsen implementációjuk. Absztrakt osztályt nem lehet közvetlenül példányosítani, csak a leszármazottait és a leszármazott osztályokban kötelező megvalósítani az összes absztrakt függvényt (kivéve ha a származtatott osztály is absztrakt, ezesetben egy (vagy több) szinttel lejjebb történik az implementáció).

    Lehet, hogy valami kimaradt, illetve nem pontos, ha így van, akkor a nálam okosabbak majd kijavítanak. :)

Új hozzászólás Aktív témák