Czemu klasa dziedziczy także wartości atrybutów ?

Czemu klasa dziedziczy także wartości atrybutów ?
Javowiec
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

Mam 2 klasy: Pracownik, który dziedziczy od Człowieka. Jak konstruktor Pracownika nie wymaga imienia i go nie wpiszę to odziedzicza on imię innego Człowieka zamiast null, czemu?

Kopiuj
package obiekty;

//klasa Czlowiek --------------------------------------------------
public class Czlowiek {
	private static String name;
	private static boolean ifLikeMeat=true;
	private boolean ifPole=ifLikeMeat;

	public Czlowiek(String name){
		this.name = name;
	}
	
	public Czlowiek(){
		
	}
	
	public static void printInfo(){
		System.out.println(name);
	}
	
	
}


//klasa Pracownik----------------------------------------------------------------
public class Pracownik extends Czlowiek {
	private int workYear;
	
	public Pracownik( int workYear){
		
		this.workYear = workYear;
	}

	
}


//klasa glowna----------------------------------------------------------------
public class Main {
	public static void main(String [] args){
		
		Czlowiek c = new Czlowiek("Alojzy");
		c.printInfo();
		
		Pracownik p = new Pracownik(22);
		p.printInfo(); //wyswietla "Alojzy" zamiast NULL, czemu?!
	}

}

 
CF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 55
2

Pole z imieniem ustawiłeś jako statyczne. Ma ono taką samą wartość dla wszystkich obiektów klasy człowiek i klas dziedziczących, w tym dla pracownika. Poczytaj o słowie kluczowym static.

SY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
1

Pole name jest statyczne, a więc przypisane do klasy, a nie do obiektu. Gdy ustawisz mu wartość, wszystkie obiekty tej klasy będą miały ją taką samą.

  • Rejestracja: dni
  • Ostatnio: dni
0

Bo tak to +/- działa w przypadku zmiennych i metod statycznych.

Kopiuj
private static String name;

 public static void printInfo()

po wywaleniu static wyświetla żądane wartości.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.