Hvorfor virker det her kode?
Hej eksperterEr 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
