Kurs Java Podstawy - rozszerzony

JavaTraps 006

Modyfikatory dostępu w Javie to zagadnienie, które na pierwszy rzut oka nie wymaga wielkiego omówienia. Przypomnijmy, że w Javie mamy ich 4 rodzaje:

  • private
  • protected
  • default
  • public

Przy czym 2 i 3 są sobie niemal równe.

W naszym dzisiejszym przykładzie skupimy się jednak na dostępie do pól prywatnych. Nasz kod przedstawia przykładową klasę z jednym polem oznaczonym jako private, oraz jednym konstruktorem ustawiającym jego wartość. Pytanie jakie sobie postawimy, to czy można się do tego pola dostać bezpośrednio (bez metody dostępowej - gettera), czy jest to niemożliwe?

public class Prywatka {
	private int x = 0;

	public Prywatka(int x) {
		this.x = x;
	}

	public boolean equal(Prywatka p) {
		return this.x == p.x;
	}

	public static void main(String[] args) {
		Prywatka a = new Prywatka(1);
		Prywatka b = new Prywatka(1);

		System.out.print(a.equal(b)+" ");
		System.out.print(a.x == b.x);
	}
}

Pytanie: czy ten kod się skompiluje, jeśli tak, to czy w trakcie wykonania otrzymamy jakieś błędy, jeśli nie, to co wyświetli się na ekranie?

a) Błąd w czasie kompilacji - The field Prywatka.x is not visible

b) Błąd w czasie wykonania - Runtime Exception

c) Program się wykona i wyświetli dwa razy true

d) Program się wykona i wyświetli true false

Odpowiedź.

Komentarze

s4ncho

brak odnosnika do odopowiedzi