# Attribute überschreiben!



## Kilosh (2. Jul 2009)

Hallo hab ein kleines Problem 

Ich habe eine abstrakte Klasse Waffe und 2 Klassen die davon erben StandardWaffe und SuperWaffe

die fire Methode ist für beide gleich, also habe ich diese in die abstrakte Klasse.
Nur irgendwie funktioniert das Attribute überschreiben nicht. Die erste if Bedigung führt immer zu false, da availableShots in der abstrakten Klasse mit 0 initialisiert wird. 

Kann mir irgenjemand helfen wie ich das hinbekomme? DAnke



```
abstract public class Waffe {
	
	
	
	protected int availableShots = 0;
	
	public void fire(){
		if (availableShots >0){
			System.out.println("FEUER FREI!");
		}
	}

}
```


```
public class SuperWaffe extends Waffe {
	
	int availableShots = 10;

}
```


```
public class StandardWaffe extends Waffe {
	
	int availableShots = 3;

}
```




```
public class Main {


	public static void main(String[] args) {
		Waffe waffe = new StandardWaffe();
		waffe.fire();

	}

}
```


----------



## Gelöschtes Mitglied 5909 (2. Jul 2009)

das liegt dadran dass man keine attribute überschreiben kann, sondern nur methoden.

Es existieren also in deinem Fall 2 variablen mit dem gleichen namen.

du kannst mit super.attribut auf das attribut der jeweiligen oberklasse zugreifen, oder aber du verwendest genau das der oberklasse

Lösung:


```
public class StandardWaffe extends Waffe {
    
    public  StandardWaffe() {
      availableShots = 3;
    }
 
}
```


----------



## Kilosh (2. Jul 2009)

oh *schäm*

vielen Dank


----------

