Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Synlig i pakken (package) er standardverdi og trenger ingen modifikator
  • Synlig kun i klassen, private
  • Synlig for alle, public
  • Synlig i pakken og for subklasser, protected

...

Public 

Dersom man deklarerer et felt, en metode etc. uten synlighetsmodifikator, tildeles standardverdien. Dette gjør ressursen tilgjengelig for alle klasser som ligger i samme packagesom public, er det mulig for alle som vet om ressursen å hente/forandre/kalle på den.

 

Code Block
languagejava
titleDefault Public modifier
linenumberstrue
package constructions;

public class Room {
	
	int size;
	String color;
	House house; // Om man vil hente huset hvor rommet befinner seg
	
	public Room(int size, String color) {
		this.size = size;
		this.color = color;
	}

	voidint setHousegetSize(House h) { 
		// Dette er en getter
		this.housereturn this.size;
	}
	
	public String setColor(String color) {
		this.color = hcolor;
	}
}

 

 

Code Block
languagejava
titleDefault Public modifier
linenumberstrue
package constructions; // House og Room ligger i samme pakkepainter;

public class HouseRoomPainter {
	 
	Room[] roomsprivate String paintcolor;
	intprivate Room sizeroom;	
 
	// Settere
	public Housevoid setPaintcolor(Room[]String roomscolor) {
		this.roomspaintcolor = roomscolor;
		}
		forpublic void setRoom(int iRoom room) {
		this.room = 0; i < rooms.length; i++room;
	}
	
	// "Arbeidsmetode"
	public void paint() {
			
			this.room.sizecolor += rooms[i].size; 
	this.paintcolor; // UGYLDIG KODE!
		// Siden Roompainter og Room IKKE er i samme package,
		// Får tilgangRoom-feltet tilcolor åvære hentepublic sizefor tilat hvertlinjen romover
			// skal være gyldig. Skriver i stedet:

			rooms[i].setHousethis.room.setColor(this.paintcolor);
			// Får tilgangHer sender vi heller paintcolor til å sette hvilket hus rommet setteren for 
		// color, som vi kan bruke fordi den er ipublic
		}
	}
}
 

 

Private

Dersom man deklarerer et felt, en metode etc. som private, er det kun mulig å hente/forandre/kalle på denne ressursen direkte i klassen.
Merk at verdiene til private felt fortsatt kan hentes gjennom en getter eller forandres med en setter

 

Code Block
languagejava
titlePrivate modifier
linenumberstrue
package constructions;

public class Room {
	
	private int size;
	private String color;
	private House house;
	
	public Room(int size, String color) {
		this.size = size;
		this.color = color;
	}
	private void setHouse(House h) { 
		// Dette er en setter
		
		this.house = h;
	}
	
	int getSize() { 
		// Dette er en getter
		
		return this.size;
	}
	
}

 

 

Code Block
languagejava
titlePrivate modifier
linenumberstrue
package constructions; // House og Room ligger i samme pakke

public class House {
	
	Room[] rooms;
	int size;
	
	public House (Room[] rooms) {
		this.rooms = rooms;
		
		for (int i = 0; i < rooms.length; i++) {
			
			this.size += rooms[i].getSize(); 
			// Her må vi bruke getteren. Vi får ikke tilgang
			// til feltet "size" om vi prøver rooms[i].size
			
			rooms[i].setHouse(this); // UGYLDIG KODE!
			// setHouse er nå private, og vi kan ikke bruke
			// metoden i House-klassen.
		}
	}
}

 

 

...

Defaut

Dersom man deklarerer et felt, en metode etc. som public, er det mulig for alle som vet om ressursen å hente/forandre/kalle på denuten synlighetsmodifikator, tildeles standardverdien. Dette gjør ressursen tilgjengelig for alle klasser som ligger i samme package.

 

Code Block
languagejava
titlePublic Default modifier
linenumberstrue
package constructions;

public class Room {
	
	int size;
	String color;
	House house; // Om man vil hente huset hvor rommet befinner seg
	
	public Room(int size, String color) {
		this.size = size;
		this.color = color;
	}

	intvoid getSizesetHouse(House h) { 
		// Dette er en getter
		return this.size;
	}
	
	public String setColor(String color) {
		this.color = colorhouse = h;
	}
}

 

 

Code Block
languagejava
titlePublic Default modifier
linenumberstrue
package painter;constructions; // House og Room ligger i samme pakke

public class RoomPainterHouse {
 	
	private String paintcolorRoom[] rooms;
	privateint Room roomsize;	
 
	// Settere
	public voidHouse setPaintcolor(StringRoom[] colorrooms) {
		this.paintcolorrooms = colorrooms;
	}	
	public void	for setRoom(Roomint room) {
		this.room i = room;
	}
	
	// "Arbeidsmetode"
	public void paint() {
		this.room.color = this.paintcolor; // UGYLDIG KODE!
0; i < rooms.length; i++) {
			
			this.size += rooms[i].size; 
			// SidenFår Roompaintertilgang ogtil Roomå IKKEhente ersize itil sammehvert package,rom
			// må Room-feltet color være public for at linjen over
		// skal være gyldig. Skriver i stedet:

		this.room.setColor(this.paintcolor
			rooms[i].setHouse(this);
			// Her sender vi heller paintcolorFår tilgang til setterenå for 
		// color, som vi kan bruke fordi den er public
	}	
} 

 

 

...

sette hvilket hus rommet er i
		}
	}
}

 

Protected

Dersom man deklarerer et felt, en metode etc. som protected, er det mulig å hente/forandre/kalle på ressursen dersom kallet kommer fra samme package eller fra en subklasse av klassen hvor ressursen er definert.

...