virtuelle Funtkionen
-
Hallo Leute,
wie funtkioniert das in Java mit den Virtuellen funtkionen?
in C++ sieht es ja so aus:
virtual TBool Open() = 0;
Das bedeutet ich muß die Methode in der abgeleiteten Klasse implementieren. Bei Java hab ich jetzt gelesen, dass jede Methode virtuell ist und ich sie mit override überschreiben kann.
ich möchte die Methode in meiner Basisklasse doch gar nicht definieren die soll ja Abstrakt sein. Wie mache ich das?
MfG
-
Destiniy schrieb:
ich möchte die Methode in meiner Basisklasse doch gar nicht definieren die soll ja Abstrakt sein.
Dann schreibst du abstract an die Klasse und die jeweiligen Funktionen, siehe: http://java.sun.com/docs/books/tutorial/java/IandI/abstract.html
-
Genau abtract ist das mittel der wahl.
Aber warum ist jede Funktion in Java virtuell
-
da stand man kann jede funktion mit override überschreiben außer man macht sie final
-
achso
ja das stimmt
-
Nur noch so zum Codestil, denn in Java gibt es klare Regeln:
Variablen und Methoden werden im camelCase geschrieben,
Klassen und Interfaces im CamelCase,
Konstanten im CAMEL_CASE
und packages im camelcase.
-
jeder kann doch den Codestil verwenden der er will und da ich aus dem c++ komme werd ich da auch nichts ändern
aber danke für den Tip wenn ich mal ein beispiel lese wird mir das sicher helfen
MfG
-
Destiniy schrieb:
jeder kann doch den Codestil verwenden der er will und da ich aus dem c++ komme werd ich da auch nichts ändern
Das ist defintiv die falsche Einstellung. Letzten Endes wird es noch darauf hinauslaufen, dass du in Java so programmierst wie in C++ und das ist a) nicht gut und b) teilweise auch nicht möglich.
Es handelt sich nunmal um zwei verschiedene Programmiersprachen mit unterschiedlichen Möglichkeiten, Stärken und Schwächen. Wenn du nicht vorhast dich der neuen Programmiersprache als Ganzes zu widmen sondern weiterhin C++ programmieren möchtest (nur mit abgeänderter Java-Syntax) frage ich mich wofür du überhaupt Java lernst. In einem echten Projekt wird dich mit einer nicht CamelCase-Syntax ohnehin niemand mitmachen lassen (und Namensgebung ist ja wohl noch ein banales Ding...).
MfG SideWinder
-
dass du in Java so programmierst wie in C++ und das ist a) nicht gut und b) teilweise auch nicht möglich.
Ich gehe aber schon davon aus das ich Klassen die ich in C++ habe auch in Java erstellen kann auf die selbe weise. Es sind doch beide objektorientiert und bieten die selben Möglichkeiten hinsichtlich der Klassen. Nur halt wie du sagtest anderer Syntax.
MfG
-
Destiniy schrieb:
dass du in Java so programmierst wie in C++ und das ist a) nicht gut und b) teilweise auch nicht möglich.
Ich gehe aber schon davon aus das ich Klassen die ich in C++ habe auch in Java erstellen kann auf die selbe weise. Es sind doch beide objektorientiert und bieten die selben Möglichkeiten hinsichtlich der Klassen. Nur halt wie du sagtest anderer Syntax.
Das lässt sich so nicht beantworten.
Eines vielleicht. C++ ist nicht so stark OOP wie du denkst und Java ist auch nicht zu 100% OOP. Daher, naja
Im Grunde kann man viele Codezeilen mehr oder weniger 1zu1 umschreiben. Meistens ergeben sich neue und vielleicht auch schönere Lösungen. Was in C++ einwandfrei funktioniert, muss in Java noch lange nicht so gemacht werden. Besonders im Bereiche wie I/O (Netzwerke, Filesystemzugriffe, ...). Die Bibliotheken sind zu unterschiedlich um sie in den gleichen Topf zu werfen.
Ich habe schon sehr viele Bibliotheken gesehen, die 1zu1 von C oder C++ in Java oder C# konvertiert wurden und ich muss sagen, dass man hier alles Vergewaltigt was man findet. Ein Kraus. Die Leute, die sowas machen
Um ein Beispiel zu nennen. Vielleicht kennst du ja NXOpen von Unigraphics, jetzt Siemens/PLM.Gruß,
Thomas