Witam wszystkich!
Programuję w Javie od niedawna, stąd może moje pytanie będzie dla niektórych naiwne, ale chciałbym zrozumieć dlaczego pewne rzeczy działają tak jak działają. Otóż mamy następujący kod:
public class A {
protected String name = "klasa A";
public String getName(){
return name;
}
}
public class B extends A {
protected String name = "klasa B";
}
A a = new A();
System.out.println(a.getName()); //zwraca "klasa A"
B b = new B();
System.out.println(b.getName()); //również zwraca "klasa A" - dlaczego?
No i właśnie chciałbym zrozumieć dlaczego to drugie wywołanie (b.getName()) zwraca "klasa A"? Dla mnie logiczne by było gdybym dostawał "klasa B" - w końcu właściwość name jest nadpisana w rozszerzającej klasie B.
Czy ktoś mógłby mi to wytłumaczyć?
Pozdrawiam