JAVA prog kérdés

Hi all

Elmondaná nekem valaki hogy ez miért működhet?


public class test {
    private String asdf;
    private int qwe;

    public test(String s,int i){
        asdf=s;
        qwe=i;
    }

    @Override
    public boolean equals(Object arg0){
        test o = (test)arg0;
        if (this.asdf.equals(o.asdf)) return true;
        else return false;
    }

    public static void main(String[] args){
        test q1 = new test("asdf",4);
        test q2 = new test("asdf",4);

        System.out.println(q1.equals(q2));
    }
}

A pirossal kiemelt sor erdekes , hogy az miert nem dob hibat mikor közvetlen hivatkozas van egy privát adattagra ( o.asdf )

Köszi a válaszokat

Hozzászólások

mikor közvetlen hivatkozas van egy privát adattagra

A private-et osztaly szinten kell erteni, nem peldany szinten. Az osztaly peldanyai elerik egymas private tagjait, azok csak mas osztalyok peldanyai elol vannak elrejtve!

----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"

De, logikus, ha belegondolsz, miert akarhatjuk egyaltalan korlatozni mindenfele allapot lathatosagat. Gondolom, valami security-szeru dolog van a fejedben, pedig nem errol van szo.

Egyszeruen igy garantaljuk, hogy csak olyan kod ferjen hozza, ami eleg kozel van, mert az jo esellyel meg tudhatja, hogy mire jo az a mezo, mire kell vigyazni, satobbi. Programozasi, es nem runtime hibakat szeretnenk kivedeni, forditasi idoben. Az equals tehat siman hozzaferhet a masik asdf-hez is, mert ugyis tudja, mit kell vele csinalni.

Erthetobb igy?