Versions Compared

Key

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

...

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

Eksempelet under krever kjennskap til arv.
 

 

Code Block
languagejava
titleProtected modifier
linenumberstrue
package workers;

public class Painter {
	
	String company;
	protected String paintcolor;
	
	
	public void setPaintcolor(String color) {
		this.paintcolor = color;
	}
	
	public String getPaintcolor() {
		return this.paintcolor;
	}
} 

 

 

Code Block
languagejava
titleProtected modifier
linenumberstrue
package painter;

public class Roompainter extends Painter{
 
	private Room room;	
 
	public void setRoom(Room room) {
		this.room = room;
	}
	
	// "Arbeidsmetode"
	public void paint() {
		this.room.setColor(this.paintcolor);
		// Her kan vi hente paintcolor uten getteren selv om
		// Roompainter ikke er i samme package som Painter
		// fordi Roompainter arver dette feltet.
	}	
}  

 

 


Synlighet ved arv

Det finnes i java et sett med regler for synlighet ved arv

  • Metoder som deklareres som public i superklassen, må også være public i subklasser
  • Metoder som deklareres som protected i en superklasse må enten være protected eller public i subklasser; det er ikke mulig å redusere synlighet til private.

  • Metoder deklarert uten synlighetsmodifikator (default) kan deklareres mer skjult i subklasser

  • Metoder som deklareres private arves ikke i det hele tatt, så det er ingen regler for disse.

...