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

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?

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?!
	}

}

 
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.

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ą.

0

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

private static String name;

 public static void printInfo()

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1