Wie setzt sich eine Klasse zusammen?

Status
Nicht offen für weitere Antworten.
M

manunana89

Gast
Könnt mir mal jemand erklären aus was eine Klasse besteht un was sie immer enthalten muss um zu funktionieren!!! :D
 

Marco13

Top Contributor
Gast hat gesagt.:
Mindestens einen Buchstaben und das Wörtchen class davor
und {} ...

Aber mal die nicht-syntaktiche Antwort: Eine Klasse muss aus nichts bestehen, und sie muss nichts enthalten, um zu funktionieren. Eine Klasse ist nur eine abstrakte Idee. Um "nichts" zu modellieren, verwendet man die Leere Klasse, die ich hier mal in nächtelanger Schwerstarbeit zusammengestellt habe:
Code:
 

hdi

Top Contributor
Moment mal, ich will ja nicht klugscheissen, und natürlich sind eure Antworten auch irgendwo mit Witz gemeint, aber sie sind trotzdem ganz einfach falsch, und zwar alle. Die Frage war, was eine Klasse enthalten muss, nicht, wie man eine Klasse in Java erzeugt.

Eine Klasse muss folgende Dinge enthalten:

Eine Zeile:

Code:
class Name

sowie einen Rumpf:

Code:
{ // kann leer sein }

(Der Klassenname muss mit einem Gross-Buchstaben beginnen.)

Zudem muss jede Klasse einen Konstruktor haben (Ausnahme: abstrakte Klassen, die dürfen keinen haben).
Das heisst nicht, dass du einen hinschreiben musst. Es gibt einen Default-Konstruktor, der so aussieht:

Code:
Name(){//...}

Du kannst ihn überschreiben oder mehrere Konsturktoren erstellen, die sich in ihren Parametern unterscheiden, aber
den Default-Konstruktor hat jede Klasse und muss ihn auch haben. Denn von jeder nicht abstrakte Klasse muss man Objekte erstellen können.

Ausserdem muss jede Klasse ihre Sichtbarkeit definieren:

Code:
public/private/protected class Name{}

Auch hier gilt: Du musst kein Keyword hinschreiben, aber wenn du es einfach weglässt ist trotzdem eine Sichtbarkeit
definiert, nämlich "sichtbar im Package". Das ist also auch fester Bestandteil einer Klasse.

Und so Dinge wie Funktionen, also Methoden (=non-static) und Prozeduren (=static), oder Variablen, also Attribute (=non-static) und Klassen-Variablen (=static) muss eine Klasse nicht haben.
Wenn sie allerdings sowas gar nicht hat, dann ist es die oben erwähnte leere Klasse ohne Sinn, aus der man zwar Objekte mit dem Default-Konstruktor erstellen kann, aber man kann damit nix anfangen.

Ich weiss nich, ob es noch mehr Dinge gibt, die eine Java-Klasse definieren. Wahrscheinlich schon, aber das geht dann wohl zu weit und eher zu der Frage "Was ist Java?"

Ich denke mal das is so in etwa das, was sie hören wollen.

PS: Ich denke man muss unterscheiden, wann man "Hausaufgaben" machen kann, und wann nicht. In diesem Fall
weiss man weiss es entweder, oder nicht. Es steckt keine Eigenleistung dahinter, die einen Lerneffekt hat. Es ist Faktenwissen, das man lernt wenn man es gesagt bekommt.
 

The_S

Top Contributor
hdi hat gesagt.:
aber sie sind trotzdem ganz einfach falsch, und zwar alle.

nein.

gast hat gesagt.:
Mindestens einen Buchstaben und das Wörtchen class davor

Marco13 hat gesagt.:

Das ist ne Klasse.

hdi hat gesagt.:
Ausnahme: abstrakte Klassen, die dürfen keinen haben

und warum lässt sich dann das kompilieren?

Code:
public abstract class Blub {

  public Blub() {
  }
}

hdi hat gesagt.:
Der Klassenname muss mit einem Gross-Buchstaben beginnen

nein. Auch folgendes lässt sich ohne Probleme kompilieren

Code:
public class blub {}
 

didjitalist

Bekanntes Mitglied
eine klasse braucht nichteinmal einen definierten namen.
Code:
new Object(){};
definiert eine anonyme klasse, die auch sofort instanziiert wird. aber grundsätzlich setzt sich eine klasse immer aus einem eindeutigen bezeichner und einem rumpf (das zwischen den {}) zusammen.
 

tfa

Top Contributor
hdi hat gesagt.:
Du kannst ihn überschreiben oder mehrere Konsturktoren erstellen, die sich in ihren Parametern unterscheiden, aber
den Default-Konstruktor hat jede Klasse und muss ihn auch haben. Denn von jeder nicht abstrakte Klasse muss man Objekte erstellen können.
Auch das ist falsch. Wenn du selber Konstruktoren definierst, gibt es keinen Default-Konstruktor mehr, es sei denn, du schreibst explizit einen parameterlosen Konstruktor hin und nennst den dann default.

Ansonsten kann man das alles nachlesen in der JLS.
 

hdi

Top Contributor
Okay, da waren bei mir doch einige Fehler drin, gut zu wissen ;) Das mit dem Namen dachte ich muss so sein, ist aber scheinbar nur ne Konvention. Das mit dem Konstruktor in der abstrakten Klasse wusste ich auch nicht! Aber klar, es macht sinn man kann ihn definieren, darf nur kein Objekt von dieser Klasse erstellen, sondern nur von den spezifischen Unterklassen, die dann aber den abstrakten Konstruktor aufrufen können.

Aber sie braucht irgendeinen Konstruktor, ob Default oder eigener ist ja egal.

Und mit new Object(){} definierst du ja einen Namen, genauer gesagt ist es doch so dass du hier gar keine neue Klasse erstellst, sondern nur ein Objekt, vom Typ der Klasse "Object". new(){} würde ja nicht gehen.

Und Hobbit: Wie gesagt, die wollen hören wie sich intern in Java ne Klasse zusammensetzt, nicht wie man Klassen erstellt oder sonst was. Und deshalb halte ich es noch immer für falsch, den Konstruktor nicht zu nennen, bei der Frage aus welchen unverzichtbaren Bestandteilen eine Klasse bestehen muss.

Aber wie ich auch schon sagte: Ich will nicht klugscheissen;) Ich kenne halt diese Uni-Aufgaben, und ich weiss was die hören wollen, auch wenn sie die Fragen immer ziemlich blöd stellen. Du kannst dir ja vorstellen dass so ne Antwort wie:

"Eine Klasse ist eine abstrakte Idee und braucht nichts!"

von den Korrekteuren nicht als richtige Lösung angesehen wird ;)
 

Marco13

Top Contributor
hdi hat gesagt.:
Ich will nicht klugscheissen;)
Ich schon :wink:

Und mit new Object(){} definierst du ja einen Namen, genauer gesagt ist es doch so dass du hier gar keine neue Klasse erstellst, sondern nur ein Objekt, vom Typ der Klasse "Object". new(){} würde ja nicht gehen.

Unabhängig von der philosophischen Frage, was es heißt, "eine Klasse zu erstellen": Das erzeugte Objekt ist NICHT vom Typ 'Object', sondern vom Typ einer anonymen Klasse, die (wie alle Klassen) von Object erbt.


Du kannst dir ja vorstellen dass so ne Antwort wie:

"Eine Klasse ist eine abstrakte Idee und braucht nichts!"

von den Korrekteuren nicht als richtige Lösung angesehen wird ;)


Och, wenn ich der Korrekteur wäre.... :roll: :wink:
 

Marco13

Top Contributor
Obwohl du nur die halbe Aussage zitiert hast, und das, was du gesagt hast, effektiv aus der zweiten Hälte hervorgeht, stimme ich zu, dass ich da das Wort "nur" vergessen hatte :bae: :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Vom Programm erstelltes Objekt setzt sich nach Programmende auf 0 zurück Java Basics - Anfänger-Themen 10
H Eclipse setzt Code kursiv und gibt Laut Java Basics - Anfänger-Themen 5
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
A Konsolenausgabe verschiebt sich Java Basics - Anfänger-Themen 8
M Wie lassen sich Konstanten in Bedingung stellen? Java Basics - Anfänger-Themen 1
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
B Programm beendet sich nicht und weiteres seltsames Verhalten Java Basics - Anfänger-Themen 9
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
H 36 Zufallszahlen die sich nicht wiederholen Java Basics - Anfänger-Themen 27
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
IamArctic Quaxli Tutorial, Rotorblätter bewegen sich nicht mehr Java Basics - Anfänger-Themen 4
M Java GUI label ändert sich erst zum Schluss Java Basics - Anfänger-Themen 4
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
J CMD schließt sich automatisch Java Basics - Anfänger-Themen 5
S Was für Aufgaben könnten sich hier hinter verbergen? Java Basics - Anfänger-Themen 5
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
F boolean stellt sich auf true Java Basics - Anfänger-Themen 15
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
A Haben KNNs ein Gedächtnis, lernen etwas oder verändern sich, während sie nicht trainieren, aber aktiv sind? Java Basics - Anfänger-Themen 3
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
H Punkt bewegt sich auf einer Ellipse Java Basics - Anfänger-Themen 6
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
Franzi1001 ScrollBar lässt sich nicht bewegen Java Basics - Anfänger-Themen 4
W Client verbindet sich nicht Java Basics - Anfänger-Themen 14
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
J Zwei Klassen die sich gegenseitig referenzieren - Bad practice? Java Basics - Anfänger-Themen 4
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
C Classpath Compiler lässt sich nur bedingt von Kommandozeile aus starten Java Basics - Anfänger-Themen 17
CptK Datentypen Objekt lässt sich nicht zu arraylist hinzufügen Java Basics - Anfänger-Themen 2
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
CptK Interface JLabel bewegt sich nicht sondern teleportiert sich... Java Basics - Anfänger-Themen 3
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
L Programm lässt sich nicht starten! Java Basics - Anfänger-Themen 1
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
L Panel verkleinert sich unerklärlicherweise Java Basics - Anfänger-Themen 7
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
K Sysout wiederholt sich Java Basics - Anfänger-Themen 6
H Wieso öffnet sich der Texteditor? Java Basics - Anfänger-Themen 6
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46
T Schleife fährt sich fest Java Basics - Anfänger-Themen 14
E App lässt sich nicht starten Java Basics - Anfänger-Themen 8
ZotacZ Best Practice Lohnt es sich in GWT einzuarbeiten? Java Basics - Anfänger-Themen 4
E Pdf-Document lässt sich im Servlet nicht öffnen Java Basics - Anfänger-Themen 5
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
S String ändert sich nicht Java Basics - Anfänger-Themen 2
Bregedur Methoden Matcher und Pattern bei sich wiederholenden Werten Java Basics - Anfänger-Themen 1
P Compiler-Fehler Wo befindet sich hier der Fehler und warum? Java Basics - Anfänger-Themen 21
F MouseMotionListener - Objekt bewegt sich nicht Java Basics - Anfänger-Themen 1
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
G Was hat es mit java.net.* auf sich? Java Basics - Anfänger-Themen 10
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
J Kann eine .jar sich selber Löschen? Java Basics - Anfänger-Themen 5
OlafHD Java Uhrzeit aktualisiert sich nicht Java Basics - Anfänger-Themen 2
J Java Datei lässt sich nicht kompilieren Java Basics - Anfänger-Themen 3
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
W OOP Zwei Objekte beziehen sich aufeinander (Zirkelbezug)? Java Basics - Anfänger-Themen 4
cezary Server läßt sich nicht starten Java Basics - Anfänger-Themen 2
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
S Variable (int) erhöht sich nicht richtig Java Basics - Anfänger-Themen 18
B Konsole schließt sich sofort Java Basics - Anfänger-Themen 8
Fishmeaker Methoden mit Methoden aufrufen - Programm hängt sich auf Java Basics - Anfänger-Themen 5
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
T Methoden [GELÖST ]Warum ruft sich die Methode von alleine auf? Java Basics - Anfänger-Themen 3
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
M Array mit Objekten lässt sich nicht auslesen Java Basics - Anfänger-Themen 10
T Scanner lässt sich nicht importieren Java Basics - Anfänger-Themen 1
Lord.Djerun (Netbeans) Bei TimeUnit.Seconds,Sleep() hängt sich das komplette Programm auf.. Java Basics - Anfänger-Themen 8
P Programm lässt sich nicht starten - Klasse mit Hauptmethode nicht gefunden Java Basics - Anfänger-Themen 9
B Compiler-Fehler [Lejos] [RCX] Programm lässt sich nicht kompilieren Java Basics - Anfänger-Themen 5
N Variablen Array-Variable verändert sich Java Basics - Anfänger-Themen 12
HoloYoitsu BufferedReader verhält sich seltsam Java Basics - Anfänger-Themen 10
S Programm verhält sich in Eclipse anders, als ein eigenständiges Programm Java Basics - Anfänger-Themen 5
N Von Kopf bis Fuss TestArrays lässt sich nicht lösen Java Basics - Anfänger-Themen 5
S Rückgabe-Array lässt sich nicht auslesen, LocalDate mit String Java Basics - Anfänger-Themen 3
dat_vin JFrame öffnet sich mehrmals Java Basics - Anfänger-Themen 6
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben