Guten Abend liebes Forum,
könnte mir jemand erklären, wie ich einen Typ, welchen ich in meinem Quellcode hinzufüge, als statisch deklariere, dessen Variable jedoch nicht statisch sein soll?
Was meinst du denn mit "dessen Variable"? Ein Typ hat keine "Variable" per se. Und was meinst du mit "im Quellcode hinzufügen?" Meinst du deklarieren oder referenzieren?
Ansonsten gibt es in Java keine statischen Toplevel-Klassen, nur statische/static innere Klassen. Das "static" an solchen Klassen bedeutet dann, dass sie auch unabhängig von einer Instanz der äußeren Klasse instanziiert werden können und keine "Verbindung" zu ihrer äußeren Klasse haben.
Was meinst du denn mit "dessen Variable"? Ein Typ hat keine "Variable" per se. Und was meinst du mit "im Quellcode hinzufügen?" Meinst du deklarieren oder referenzieren?
Ansonsten gibt es in Java keine statischen Toplevel-Klassen, nur statische/static innere Klassen. Das "static" an solchen Klassen bedeutet dann, dass sie auch unabhängig von einer Instanz der äußeren Klasse instanziiert werden können und keine "Verbindung" zu ihrer äußeren Klasse haben.
Es tut mir leid, aufgrund meines mangelnden Wissens auf diesem Fachgebiet, ist es mir nicht möglich meine Fragen für Fachleute konkreter zu stellen.Jedoch bedanke ich mich sehr für deine Bereitschaft mir dennoch Hilfe zu leisten!
Ich möchte eine Variable mit einem x Typen deklarieren. Dieser Typ soll statisch sein, diese Variable jedoch nicht. Ich kann hierbei ja nicht, sofern mir das bekannt ist, "statisch Typ.Name Variabel.Name" hinzufügen, oder? Denn dies würde ja lediglich aussagen, dass die Variabel statisch ist. Ich hoffe es ist diesmal deutlicher zu verstehen, worauf sich meine Frage bezieht.
Kann es zufällig sein, daß du anstatt des Schlüsselworts 'static' eigentlich 'final' verwenden willst?
Static heißt keineswegs, daß das Teil "statisch" im Sinne von unveränderlich ist. Wenn du beispielsweise ein Integer i in deiner Klasse als static deklarierst, dann hat nicht jedes Objekt dieser Klasse ein eigenes Integer i, sondern alle Instanzen greifen auf ein und disselbe Speicherstelle zu. Beispiel:
Beachte, daß du die Methode setI() auf dem Objekt instance aufrufst, aber auf einem völlig anderen Objekt, nämlich otherInstance, den Wert wieder rausbekommst. Lass dich nicht davon verwirren daß beide Objekte vom gleichen Typ, nämlich vom Typ StaticDemonstrator, sind.
Genausogut könntest du zwei Computer haben, die auf dasselbe Netzlaufwerk zugreifen: Beide Computer sind völlig eigenständig und machen völlig verschiedene Dinge, greifen aber auf diesselbe Speicherstelle zu: nämlich das Netzlaufwerk. Wenn Rechner a dort anfängt Dateien anzulegen und zu löschen, so bekommt das Rechner b augenblicklich mit. Das Netzlaufwerk spielt hierbei diesselbe Rolle wie das die statische Variable i in meinem Beispiel oben tut.
Vielleicht ist damit jetzt auch klar, was der Unterschied zwischen Variablen und Typen sind: eine Variable ist einfach ein Speicherbereich, die einen Wert festhält. Dieser Wert kann vom Typ Integer, Double oder irgendeiner Klasse sein.
Vielleicht hat der TE die Aufgabenstellung falsch aufgefasst ioder wiedergegeben und es ist lediglich so etwas gemeint:
Java:
classAnimal{}classDogextendsAnimal{}classCatextendsAnimal{}publicclassStaticDynamic{publicstaticvoidmain(String[] args){Animal myFirstAnimal =newDog();// statischer Typ Animal, dynamischer Typ DogAnimal mySecondAnimal =newCat();// statischer Typ Animal, dynamischer Typ Cat}}