|
|
|
|
Operatoren überladen |
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
|
|
Operatoren überladen |
|
Hallo,
ich schreibe gerade an einer Java-Klasse die Matrizenoperationen durchführen kann. Daher wäre es sehr bequem, wenn ich z.B. den Multiplikationsoperator überladen könnte. Leider habe ich noch nie gesehen, wie das in Java funktioniert und habe auch nichts entsprechendes gefunden.
Vielleicht kann mir jemand von euch helfen.
Danke
|
|
06.03.2006 15:50 |
|
|
Champus
BlackBoarder
Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe
|
|
RE: Operatoren überladen |
|
Zitat: |
Original von Google
"In Java ist daher das Überladen der Operatoren bisher nicht möglich."
"Im Gegensatz zu C++ können in Java keine Operatoren überladen werden."
"kurz und knapp Nein, in Java kann man nur Methoden überladen." |
__________________ CorvusCorone -> Champus
|
|
06.03.2006 16:33 |
|
|
Misel
Hüter des Kitkat
Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d
e
|
|
Hab eben auch mal nen Kommilitonen gefragt, der kann sich auch nicht erinnern, das jemals gehabt zu haben. :o
__________________ LAUFT! Ich spiele KILLERSPIELE!
|
|
06.03.2006 17:21 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Themenstarter
|
|
@Corvus
Das wichtige Wort hier lautet: "bisher". Da Wikipedia nicht immer auf dem laufenden ist und wir auch schon lange über Java 1.3 hinaus sind, hätte sich da mitlerweile einiges tun können.
|
|
06.03.2006 17:46 |
|
|
Champus
BlackBoarder
Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe
|
|
Es sind aber recht aktuelle Zitate die ich oben zusammen gefasst habe, das von dir zitierte ist auch nicht aus der Wikipedia sondern aus einem E-Book was auch recht aktuell ist.
__________________ CorvusCorone -> Champus
|
|
06.03.2006 17:51 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
Das wird sich so schnell nicht ändern,
da man im Javaumfeld sowas lieber mit Methoden macht.
Eines der Argumente die gegen das Überladen spricht
aus sicht der Javaianer ist, das man dadurch eine Mehrdeutigkeit
erzeugt. Man kann z.b. den +operator als -operator implementieren
etc. Das man das mit Methoden auch kann, ist ein anderes Thema *g*
phlox
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
06.03.2006 17:53 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Themenstarter
|
|
Passt zwar nicht so wirklich in diesen Thread:
Ich habe da ein seltsames Problem mit dem Überladen von Konstruktoren. Beim Kompilieren bekomme ich den folgenden Fehler:
Zitat: |
dMatrix.java:132: cannot find symbol
symbol : constructor dMatrix(int,int)
location: class dMatrix
result = new dMatrix(getDimension('M'), B.getDimension('
N'));
^
1 error |
So wie ich diese Meldung verstehe, findet er keinen Konstruktor mit den Parametern (int, int). Den habe ich aber wie folgt definiert:
code: |
1:
2:
3:
4:
5:
6:
|
public void dMatrix(int N, int M)
{
//If Dimension of the Array is given, create a correspondig Null-Matrix
m = new double[N][M];
DimensionN = N;
DimensionM = M; |
|
Ich habe schon die Klammerung gecheckt. Die sollte stimmen. Der Compiler zeigt mir auch sonst keinen Fehler an. Ich habe keine Ahnung woran das liegen könnte. Jemand eine Idee?
|
|
07.03.2006 12:09 |
|
|
phlox81
Bote des Lichts und Moderator
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
|
|
Er findet den Konstruktor nicht.
Was du da hast ist ne Methode, Konstruktoren haben
keinen Rückgabetypen.
Korrekt wäre also:
code: |
1:
|
public dMatrix(int N, int M){.... |
|
phlox
__________________ Intelligenz ist eine Illusion des Menschen
phlox81.de | codenode.de
|
|
07.03.2006 14:50 |
|
|
Romanticus
Member
Dabei seit: 08.03.2003
Beiträge: 280
Herkunft: ein Land, das in Deutschland nur wenige kennen
|
|
fuck
wieso ist mir das nicht aufgefallen?
)
__________________ Heute sterben die meisten Leute an einer Art schleichenden Menschenverstandes und entdecken zu spät, dass das Einzige, was wir nie bereuen, unsere Fehler sind. Oscar Wilde
|
|
07.03.2006 14:57 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Themenstarter
|
|
@phlox81: Ich bin mir nicht ganz sicher, was Du meinst. Ich habe doch geschrieben "public void dMatrix" void ist ja kein Rückgabewert. Es funktioniert ja auch bei allen anderen Konstrukturen. Ich habe es auch mal ausprobiert und es weggelassen. Das ändert nichts am Fehler.
@Romanticus: das erste getDimension bezieht sich auf die aktuelle Instanz. Korrekt wäre also this.getDimension. Aber da man das nicht hinschreiben muß, habe ich das mal getrost weggelassen. Und B ist natürlich auch vom Typ dMatrix.
Ich habe mal den Code der Klasse angehängt:
|
|
07.03.2006 19:50 |
|
|
Compuholic
knows where he wants to go tomorrow
Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München
Themenstarter
|
|
Danke an alle.
War mir vollkommen neu, daß es einen Unterschied macht, ob man void schreibt oder einfach keinen Rückgabetyp angibt. Bisher hat es immer funktioniert.
|
|
07.03.2006 20:44 |
|
|
Misel
Hüter des Kitkat
Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d
e
|
|
Zitat: |
Original von Compuholic
Danke an alle.
War mir vollkommen neu, daß es einen Unterschied macht, ob man void schreibt oder einfach keinen Rückgabetyp angibt. Bisher hat es immer funktioniert. |
naja, void ist Rückgabetyp vom Typ "nichts". Während gar nix eben überhaupt kein Rückgabetyp ist.
__________________ LAUFT! Ich spiele KILLERSPIELE!
|
|
07.03.2006 21:47 |
|
|
Romanticus
Member
Dabei seit: 08.03.2003
Beiträge: 280
Herkunft: ein Land, das in Deutschland nur wenige kennen
|
|
Zitat: |
Original von Misel
Zitat: |
Original von Compuholic
Danke an alle.
War mir vollkommen neu, daß es einen Unterschied macht, ob man void schreibt oder einfach keinen Rückgabetyp angibt. Bisher hat es immer funktioniert. |
naja, void ist Rückgabetyp vom Typ "nichts". Während gar nix eben überhaupt kein Rückgabetyp ist.
|
Void ist gar kein Rückgabetyp, deswegen muss man bei methoden mit void eben kein return benutzen. Es liegt viel mehr an der Syntax, Konstruktoren-definitionen dürfen eben keine Angabe über den Rückgabetyp haben, weil sie nie eine Rückgabe haben.
mfg
ich
__________________ Heute sterben die meisten Leute an einer Art schleichenden Menschenverstandes und entdecken zu spät, dass das Einzige, was wir nie bereuen, unsere Fehler sind. Oscar Wilde
|
|
09.03.2006 10:03 |
|
|
|
|
|
|