Keresés

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

  • Lortech

    addikt

    válasz Lakers #980 üzenetére

    1. kérdés, itt hol van a konstruktor és mit csinál itt? Annyit tudok róla, hogy egy speiciális metódus ami példányosítás során jön létre... De jó lett volna egy magyarázat a kódban, hogy mit hol hogyan működik.

    Így van, a konstruktor egy speciális metódus ami az objektum példányosításakor az obj. kezdőállapotát hivatott beállítani.
    Ha nem adsz meg konstruktort, akkor implicit módon egy paramétert nélküli konstruktor jön létre.
    A példában a konstruktor beállítja a két példány szintű változót a paraméterben kapott értékre.
    Tehát a
    Dog d=new Dog("Rex", 2);
    sor után hivatkozhatsz d.name és d.age -re.

    2. kérdés: public Dog(string n, int a) lenne az objektum?
    Nem, ez konkrétan a konstruktor. Az objektum az osztályod egy példánya.
    kieg: vegyük észre, hogy nincs visszatérési típusa, ez is a konstruktor ismérve.

    3. kérdés a this. metódus itt mit csinál? Annyi magyarázat volt, hogy egy konstruktorból hívhatunk egy másikat...
    A this kulcsszó (a Dog nevű osztály definíciójában vagyunk)
    itt az objektumpéldány referenciájára mutat. Gyak. a példányt magát jelenti. Ezzel például más metódusnak adhatjuk át az aktuális példánynak vagy szokás azonos névvel ellátni a bemenő paraméterek nevét az osztály megfelelő mezőinek neveivel.
    pl.

    using System;

    class Dog
    {
    private string name;
    private int age;

    public Dog(string name, int age)
    {
    this.name=name;
    this.age=age;

    }
    }

    class Program
    {
    static public void Main()
    {
    Dog d=new Dog("Rex", 2);
    }
    }

    A példában name és age a bemenő paraméter, a this kulcsszóval azt mondod meg, hogy a this-en keresztül hivatkozott mezők az objektumpéldány példány szintű változói, nem pedig a bemenő paraméterek.

    this()-szel hívhatsz másik konstruktort is egy konstruktorból, pl:

    ...
    private String sex;
    public Dog(string name, int age)
    {
    this(name,age,"ismeretlen");
    }
    }

    public Dog(string name, int age, String sex)
    {
    this.name=name;
    this.age=age;
    this.sex = sex;
    }
    }

    ...

    [ Szerkesztve ]

    Thank you to god for making me an atheist

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