Was ist der Unterschied zwischen Instanzmethoden und Konstruktoren? Was usr außerdem der Unterschied zwischen publix static und einer public Klasse (Java)?

3 Antworten

Guten Morgen,

Der Konstruktor wird beim Erstellen einer Klasse ausgeführt.

Auto Car = new Auto();

Die Klammern hinter Auto(); sagen dir, dass dort eine Methode ist. Beim Erstellen einer Klasse über new wird der Konstruktor ausgeführt.

Wie daCypher schon sagt, kann man diese Methode verwenden, um zum Beispiel initiale Werte zu vergeben.

Eine Instanzmethode ist eine Methode einer Klasse - darunter zählt ebenfalls der Konstruktor. Aber generell alle Ausführungen aus der Klasse und Subclasses heraus.

Auto.Fahren(); Mercedes.Fahren(); In dem Beispiel, wenn Mercedes von Auto geerbt hat.

static beschreibt, dass eine Methode statisch ausführbar ist. Das heißt, dass du kein Objekt dafür benötigst. Sinnig ist das, wenn du z.B. einen Taschenrechner hast und nicht jedes Mal einen Taschenrechner initialisieren willst, um etwas zu berechnen.

public ohne static;

Taschenrechner Rechner = new Taschenrechner();
int i = Rechner.Addieren(1, 1); // i = 2

public mit static;

int i = Taschenrechner.Addieren(1, 1); // i = 2

Statische Methoden und Attribute können also ohne ein neues Objekt abgerufen werden. Statische Attribute haben über die Klasse hinweg nur einen einzigen Wert.

Keine statischen Attribute, die sinnig sind, sind zum Beispiel Lebenspunkte bei Gegnern in einem Spiel.

Sinnige statische Attribute, die sinnig sind, ist zum Beispiel, dass es viele Geisteinheiten gibt, man sie aber erst angreifen kann, wenn man ein bestimmtes Item hat. So kann man einfach über die Klasse an sich für alle Geister auf true setzen, dass man dieses Item hat.

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting

Ein ctor ist letztlich auch nur eine spezielle Methode, die während der Erstellung des Objektes ausgeführt wird.

Der Name verrät das aber ansich schon.

Eine Instanzmethode ist eine Methode, die du für die Objekte einer Klasse definieren kannst. Z.B. wenn du eine Klasse "Auto" hast, kannst du eine Methode namens "motorAnlassen()", um bei einem bestimmten Auto den Motor anzulassen.

Ein Konstruktor ist eine Methode, die aufgerufen wird, um ein neues Auto zu erzeugen. In der Regel werden im Konstruktor die privaten Attribute eines Objekts initialisiert. Wenn wir beim Beispiel "Auto" bleiben, könntest du dem Konstruktor z.B. den Hersteller und die Marke übergeben und es wird ein Auto mit den jeweiligen Attributen erstellt.

public class Auto {
	private String hersteller;
	private String modell;
	private int drehzahl = 0;
	
	public Auto(String hersteller, String modell) {
		this.hersteller = hersteller;
		this.modell = modell;
	}
	
	public void motorAnlassen() {
		drehzahl = 800;
	}
}

Da, wo du das Auto dann erzeugen möchtest, kannst du z.B. das machen:

public static void main(String[] args) {
	// Neues Auto erzeugen
	Auto meinAuto = new Auto("Renault", "Kadjar");
	
	// Methode "motorAnlassen" für meinAuto aufrufen
	meinAuto.motorAnlassen();
}