first.ohm() Schreibweise

Nummer6800

Aktives Mitglied
Hallo.

Ich bin auf eine Schreibweise gestossen, die nicht in meinen Javabüchern steht (gibt es da eigentlich eine Webseite fuer Java Schreibweisen?).

Ich verstehe first.ohm() nicht. So eine Schreibweise habe ich noch nie gesehen.
Wirkt die Variable so wie eine Instanz?? Oder uebergibt sie einen Wert??


Java:
// repräsentiert Widerstandsnetz mit einer Serienschaltung
// Konkstruktor erwartet zwei Widerstandsnetze & speichert diese ab

public class Serial extends Net {
	private Net first;
	private Net second;

	public Serial (Net first, Net second) {
	this.first = first;
	this.second = second;
	}
	
	// gibt den Widerstandswert des Netzes zurueck
	public double ohm()

// DIESE ZEILE HIER
	{return first.ohm() + second.ohm();}
}
 

Agaton Sax

Mitglied
Ich bin auf eine Schreibweise gestossen, die nicht in meinen Javabüchern steht (gibt es da eigentlich eine Webseite fuer Java Schreibweisen?).
Ja, fütter Google mal mit "Java Code Conventions" oder "Java Style Guide". Da findest du erste Ansatzpunkte wie sowas aussieht.
Ich verstehe first.ohm() nicht. So eine Schreibweise habe ich noch nie gesehen.
Wirkt die Variable so wie eine Instanz?? Oder uebergibt sie einen Wert??
Das ist eine ganz normale Methode, welche dir die Summe der 2 Widerstände der Reihenschaltung zurückgibt. Das einzige was dir wahrscheinlich sonderbar erscheint ist, dass der Methodenname kein Verb (z.B. get/compute/calculate) enthält. Muss er aber auch nicht. Ist alles eine Frage von Lesbarkeit, Konventionen und persönlichen Vorlieben.
 
Zuletzt bearbeitet:

Nummer6800

Aktives Mitglied
Vielen Dank fuer die Antwort.


Ich sehe schon. first und second sind vom Typ Net.
Aber die Net Klasse sieht nur so aus:

Java:
public abstract class Net {

public abstract double ohm();

Wird dann nicht die Methode ohm() von der Klasse Net aufgerufen?
Bei first.ohm() und second.ohm()
 

Tarrew

Top Contributor
Von abstrakten Klassen kann man sich keine Objekte erzeugen.

Die Parameter sollen vom Typ Net sein. Hast ja schon richtig erkannt, dass das keine Instanzen der eigentlichen Klasse sein können.
Da können aber Objekte von Klassen übergeben werden, die von der Klasse Net erben.

Wenn du die Klasse "RandomOhm" zB hättest:
Java:
public class RandomOhm extends Net{

	@Override
	public double ohm() {
		return Math.random()*1000;
	}
		
}
Dann könntest du dir ein Serial-Objekt erzeugen mit:
Java:
	Serial serial = new Serial(new RandomOhm(), new RandomOhm());

Der Konstruktor erwartet ja zwei Objekte vom Typ Net und "RandomOhm" passt zu den Parametern, da es eine Unterklasse ist.
Dementsprechend wird im ohm Aufruf des Serial-Objekts dann die ohm-Methoden der beiden "RandomOhm"- Objekte aufgerufen.

So ähnlich wie jeder VW Golf auch ein Auto ist.
 
Zuletzt bearbeitet:

Nummer6800

Aktives Mitglied
Ich seh schon wo mein Fehler war. Habe zu sehr auf die Methoden alleine in class Serial und Parallel geguckt.
Das hat mich zu sehr abgelenkt. Ich mußte erst den ganzen Code durchgehen. War so aehnlich wie bei den verketteten Listen. Das eine uebergibt, das andere enthaelt, etc.
 

Ähnliche Java Themen

Neue Themen


Oben