Avatar billede sandrasmurf Nybegynder
13. september 2006 - 14:47 Der er 4 kommentarer og
1 løsning

Hvorfor virker det her kode?

Hej eksperter

Er snart IT ingeniør og arbejder efterhånden udelukkende med C#, men brormand er lige startet på begynder Java på sit studie og det har jeg jo også haft i tidernes morgen.

I den forbindelse skal jeg naturligvis som familiens lærde hjælpe ham med opgaverne i ny og næ og idag har jeg modtaget følgende vrøvl fra ham. Udover at det er noget vrøvl, så fatter jeg simpelthen ikke hvorfor det compiler.

Så derfor jeg er nødt til at spørge jer eksperter og bede om uddybende forklaring, så min viden bliver opgraderet inden afsendelsen fra uni.

******************************************
public class Person
{
    private String name;
    private int age;
    private int intelligens;
    private Person lover;
    private Person girlfriend;

    /**
    * Constructor for objects of class Person
    */
    public Person(String navn, int alder, int IQ, Person elskede, Person kaereste)
    {
        name = navn;
        age = alder;
        intelligens = IQ;
        lover = elskede;
        girlfriend = kaereste;
    }
   
    public boolean isHappy()
    {
        if (girlfriend == null || girlfriend.girlfriend != this)
        {
            System.out.println (name + " is happy!/n");
            return true;
        }
     
      System.out.println (name + " is not happy!/n");
      return false;
    }
}

Jeg fatter simpelthen ikke hvordan linien
girlfriend.girlfriend != this kan compilere.

girlfriend har privat access i klassen og girlfriend er ikke this instansen. Hvis girlfriend var en public variabel ville det give mening, men når den er private er det over min forstand.

Nogen der kan forklare en aldrende mand, hvordan det hænger sammen. Jeg har åbenbart ikke fået fat i alt hvad jeg burde omkring Java.

*************************************
Test:
Person kran = new Person("Kran", 13, 22, null, null);
Person michael = new Person("Michael", 42, 150, null, kran);
// System.out.println(michael.girlfriend); //compiler fejl
michael.isHappy();

allan
Avatar billede arne_v Ekspert
13. september 2006 - 14:56 #1
private betyde adgang for alle instanser af samme klasse ikk adgang for samme instans

jeg bruger selv altid get metode for andre instanser for at gøre det tydeligt, men
Java enforcer det ikke
Avatar billede sandrasmurf Nybegynder
13. september 2006 - 15:02 #2
wtf.... Det anede jeg ikke..

Bruger selv samme fremgang som dig Arne. Troede faktisk ikke at der var andre måder.

Har aldrig tænkt over, at private gav adgang til kald som ovenstående mellem instanser af samme klasse.

Synes godt nok det er en smule upædagogisk at private virker sådan, men hvad , jeg er jo heller ikke ansat på Sun.

Smid et svar.
Avatar billede sandrasmurf Nybegynder
13. september 2006 - 15:05 #3
Hmm.. Bare brormand ikke læser det her...
Så kan jeg stadig opretholde rangen som familiens lærde.. Hehe
Avatar billede sandrasmurf Nybegynder
13. september 2006 - 15:15 #4
Smid et svar Arne!!!

*reklame* Host host... Hvis du er klar på nogle flere point, så har jeg lagt et spørgsmål om Visual Studio 2005 i programmering->generelt. Ved ikke om du huserer den kategori også.
Avatar billede arne_v Ekspert
13. september 2006 - 15:40 #5
svar

det gør jeg, men jeg er ikke VS ekspert
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester