Hirdetés

Keresés

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

  • Aethelstone
    addikt

    Sziasztok!

    Találtam egy mintapéldát az osztály és példánytagok inicializáló blokkjaival kapcsolatosan:

    package hallgato;
    public class Hallgato {
    static int alapTandij;
    double atlag;
    int tandij;
    // Osztályinicializáló blokk
    static {alapTandij=2000;}
    // Példányinicializáló blokk
    { atlag=7.5;
    tandij=alapTandij+(int)Math.round(3000*(10-atlag));
    }
    public void prrint(){
    System.out.println("Tandíj: "+tandij);
    }
    }

    Próbáltam futtatni, úgy hogy a main-t betettem a Hallgató osztályba, de csak úgy éri el a függvényt és a változókat, ha azok mind statikusak.
    Benéztem valamit? Mindennek static-nak kell lennie és az értékadások (példányinicializálás) csak a példányoknál mutatkoznak?

    Ha mondjuk egy értelmesebb IDE-t használsz, neadjisten PMD-t, akkor meg is mondja, amit az előző kolléga a hozzászólásában kifejtett :) Talán még a javac is sikít :)

  • usergefi
    csendes tag

    Sziasztok!

    Találtam egy mintapéldát az osztály és példánytagok inicializáló blokkjaival kapcsolatosan:

    package hallgato;
    public class Hallgato {
    static int alapTandij;
    double atlag;
    int tandij;
    // Osztályinicializáló blokk
    static {alapTandij=2000;}
    // Példányinicializáló blokk
    { atlag=7.5;
    tandij=alapTandij+(int)Math.round(3000*(10-atlag));
    }
    public void prrint(){
    System.out.println("Tandíj: "+tandij);
    }
    }

    Próbáltam futtatni, úgy hogy a main-t betettem a Hallgató osztályba, de csak úgy éri el a függvényt és a változókat, ha azok mind statikusak.
    Benéztem valamit? Mindennek static-nak kell lennie és az értékadások (példányinicializálás) csak a példányoknál mutatkoznak?

    Mivel a main függvény static, ezért abból csak statikus változókat és függvényeket tudsz elérni. Ha nem akarod azzá tenni őket, akkor példányosítani kell a Hallgato osztályt és azon keresztül hívni a függvényt:
    Hallgato h = new Hallgato();
    h.prrint();

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