[java] methode afschermen voor public maar niet voor andere klasse

Moderators: jkien, Xilvo

Reageer
Gebruikersavatar
Berichten: 6.905

[java] methode afschermen voor public maar niet voor andere klasse

Stel ik heb een klasse A en een klasse B: (exacte code doet er niet doe normaal)

Code: Selecteer alles

class A{

public void methode1(){

...

}

public void methode2(){

...

}

}

class B{

...

}
Kan ik er voor zorgen dat "iedereen" aan methode1 kan maar slechts de klasse B aan methode2? Ik zou het niet weten hoe het moet en ik vrees dat het ook niet gaat.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 5.609

Re: [java] methode afschermen voor public maar niet voor andere klasse

Kan ik er voor zorgen dat "iedereen" aan methode1 kan maar slechts de klasse B aan methode2? Ik zou het niet weten hoe het moet en ik vrees dat het ook niet gaat.
Het kan, namelijk door B in dezelfde package te steken als A. Door in A geen modifier mee te geven aan de methode kan B er aan, maar C die niet in de package zit niet.

Een andere manier is door de methode private te maken, en B een geneste klasse te maken in A
Increased encapsulation—Consider two top-level classes, A and B, where B needs access to members of A that would otherwise be declared private. By hiding class B within class A, A's members can be declared private and B can access them.
Lees anders dit eens.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Gebruikersavatar
Berichten: 6.905

Re: [java] methode afschermen voor public maar niet voor andere klasse

Ah. Het kan blijkbaar toch :) Eerste methode lijkt mij het transparantste aangezien alles klassen samen de package zouden moeten vormen. Thx 317070!
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Reageer