Was sind Attribute?
Moin.
Das ist mein Konstruktor-Code:
public class Table extends World {
int dx = 10; // Die horizontale Geschwindigkeit des Balls
int dy = 0; // Die vertikale Geschwindigkeit des Balls
Player player = new Player(); // Der Spieler
Computer computer = new Computer(); // Der zweite Spieler
Ball ball = new Ball(); // Der Ball
Score1 s1 = new Score1(); // Die Anzeige für den Spieler-Score
Score2 s2 = new Score2(); // Die Anzeige für den Spieler2-Score
GreenfootImage read1 = new GreenfootImage(100, 30); // Das Bild für den Spieler-Score
GreenfootImage read2 = new GreenfootImage(100, 30); // Das Bild für den Spieler2-Score
int p = 0; // Der Spieler-Score
int c = 0; // Der Spieler2-Score
String pScore = String.valueOf(p); // Der Spieler-Score als String
String cScore = String.valueOf(c); // Der Spieler2-Score als String
und ich bin mir nicht ganz sicher, was davon Attribute sind. Eigentlich werden Attribute ja mit private begonnen. Sind int p=0 und so trotzdem Attribute?
1 Antwort
Ein Attribut (der eigentliche Fachbegriff ist Feld) ist eine Variable, die innerhalb des Klassenkörpers, aber nicht innerhalb einer Methode/einem Konstruktor deklariert wird.
Beispiel:
class SomeClass {
int someVariable; // field
public SomeClass() { // constructor
someVariable = 123; // set field value
int otherVariable; // local variable
}
}
In deinem Code werden alle vorhandenen Variablen als Attribute/Felder deklariert. Eine explizite Konstruktordefinition hast du dort nicht.
(...) Eigentlich werden Attribute ja mit private begonnen. (...)
Ein Attribut muss nicht zwingend mit einem expliziten Zugriffsmodifikator deklariert werden (siehe obiges Beispiel).
Es ist ein Attribut mit dem Typ Player. Es kann also nur auf Objekte diesen Typs zeigen oder null ("nichts"). Wie bei einer Variablendeklaration wird vor dem Namen der Typ aufgeführt.
Bei den Typen int und boolean handelt es sich um primitive Datentypen, die fest in der Sprache verankert sind und sich nur einen konstanten Wert merken.
Bei den Typen String, Player, Ball, Score1, etc. handelt es sich um komplexe Datentypen, da sie sich noch mehr Werte merken und auch über Methoden verfügen. Sie werden definiert, indem man eine Klasse erstellt.
Die Klasse bzw. der Typ String wird von der Java-Standardbibliothek definiert, all die anderen Typen sind Klassen, die von deiner Anwendung oder einer eingebundenen Bibliothek beschrieben werden. Du erstellst auch gerade einen eigenen Typ namens Table.
Komplexe Typen werden auch Referenztypen genannt, da Variablen eines Referenztyps entweder auf ein Objekt oder null verweisen kann. Nicht nur auf einen konstanten Wert wie int.
Beispiel:
Person tim = null;
Person tom = new Person();
Zwei Variablen werden angelegt, die jeweils den Typ Person haben. Die erste Variable verweist auf nichts (null), die zweite hingegen auf ein Objekt der Klasse bzw. des Typs Person.
Das heißt int ist dann trotzdem ein Attribut. Und was ist mit Player player = new player()? Hier ruf ich das doch nur neu auf oder?