Ich habe mir den Code angesehen.
Plus: Er ist kompilierbar.
Zum OutOfMemoryError:
Der tritt auf, weil du rekursiv Konstruktoren von Klassen aufrufst, bis der Speicher futsch ist. Liegt wohl daran, dass Swing Komponenten recht speicherhungrig sind.
Normalerweise kommt eine Stack Overflow Exception.
Du hast folgendes geschrieben:
class Snake {
private SnakeFrame sf = new SnakeFrame();
}
class SnakeFrame {
private Snake snake = new Snake();
}
Was passiert wenn man 'new SnakeFrame()' oder 'new Snake()' macht?
new Snake();
--> new SnakeFrame();
--> new Snake();
--> new SnakeFrame();
usw.
Zu deinem Programm:
Es scheint mir, als ob du Probleme mit den Grundsätzen von Java hast. Mir ist jetzt auch klar, warum du "Schwierigkeiten" mit Gettern/Settern hast.
Als Grundsatzeinführung:
Es gibt Klassen und es gibt Objekte (Instanzen) von Klassen.
Es gibt statische Methoden, Variablen, etc. und auch non-static.
Statisch bedeutet, dass du im Kontext der Klasse arbeitest. Nicht-Statisch ist im Kontext EINES Objektes.
Daher, was man nicht erwarten kann:
Ausgangssituation: 2 Objekte der Klasse Snake in 2 unterschiedlichen Klassen A, B
Wenn in Klasse A: snakeObjekt1.setBuxtehude(true); aufgerufen wird.
Gilt NICHT in Klasse B: snakeObjekt2.getBuxtehude() == true !!
Falls nicht mit statischen 'Dingen' gearbeitet wird.
Ich kann dir nur empfehlen ein Java Buch zu lesen. Z.B. "Java ist auch eine Insel".
Siehe:
http://openbook.galileocomputing.de/javainsel8/