Ausgehend von einer C ++ - Umgebung habe ich mich daran gewöhnt, viele der Funktionen, die ich brauchte, in eine funcs.h
-Datei aufzuteilen und dann #include "funcs.h"
und dann die Funktionsprototypen in die .cpp-Hauptdatei einzufügen. Jetzt fange ich an, mit Java zu arbeiten (hauptsächlich mit minecraft ModloeaderMp) und ich habe bereits eine funcs.java
-Datei gemacht, wo es einige vorgefertigte Funktionen gibt (z. B. einige Funktionen zum Kopieren von Dateien, Stapel von Gegenständen usw.). Da ich bereits die Anweisung Public class mod_mine extends BaseModMp
verwende, gibt es eine Möglichkeit, die Funktionen zu importieren oder kann ich einfach noch eine Public class mod_mine extends funcs
machen?
Sie haben nicht #include
in Java, Sie import package.Class
. Seit Java 6 (oder war es 5?), Können Sie auch import static package.Class.staticMethodOfClass
, was einige Formen von dem, was Sie versuchen, erreichen würde.
Wie auch @duffymo bemerkt, speichert import
nur, dass Sie die importierten Klassennamen nicht systematisch mit dem Paketnamen oder den importierten statischen Methodennamen mit dem Paket- und Klassennamen voranstellen. Die eigentliche #include
Semantik existiert in Java überhaupt nicht.
Das heißt, eine "funcs.java" -Datei zu haben scheint mir so, als ob du anfängst, deine Zehen in einige Anti-Muster zu tauchen ... Und du solltest dich von diesen fernhalten.
Es gibt kein #include
in Java.
Ich möchte kein Design mit funcs.java
, in dem alle Variablen gespeichert sind. Objekte sind Zustand und Verhalten in einer einzigen Komponente gekapselt. Sie entwickeln nicht in einer objektorientierten Weise, wenn Sie das tun.
Gute Namen sind wichtig. Eine Klasse namens Stuff
, die Stuff2
erweitert, sollte besser ein schlechtes Beispiel sein.
Das ist nicht gut Java. Ich würde es auch nicht als gutes C ++ bezeichnen.
Java ist eine objektorientierte Programmiersprache und es gibt einen Grund dafür.
Es gibt kein # include in Java, obwohl Sie Klassen aus anderen Paketen importieren können. Die separate Klasse func.java zum Speichern von Variablen zu erstellen, ist möglicherweise keine gute Idee, solange oder bis alle Konstanten sind. Wenn Sie eine Klasse erweitern, können Sie die Funktion erneut verwenden. aber erfüllt die Erweiterungsklasse den IS-A-Test, wenn nicht, dass dies eine schlechte Idee wäre.
Wenn man von C ++ ausgeht, kann es hilfreich sein, ein gutes Buch zu lesen, zB Head First Java.
Klingt so, als würden Sie alle Ihre Methoden in dieselbe Klasse stellen. Sie sollten sie trennen:
Hilfsklassen
Diese sollten statische Methoden enthalten, die beispielsweise den Inhalt einer Datei abrufen, einen Dialog anzeigen oder zwei Zahlen hinzufügen. Sie gehören nicht wirklich in eine Objektklasse, sie benötigen keine Instanzen und werden im gesamten Programm verwendet. Ein gutes Beispiel dafür finden Sie java.lang.Math / p>
Konstante Klassen- oder Konfigurationsdateien
Dies kann eine Constants
Klasse sein, die static final
Mitglieder enthält, wie PI = 3.1415
. Sie können auf sie mit Constants.PI
zugreifen.
Oder Sie können Konfigurationsdateien verwenden und diese in Configuration
laden und auf die Konfigurationsvariablen mit etwas wie config.get("database")
Andere
Wenn Ihr Code nicht in diese passt, sollten Sie ihn in eine Klasse einfügen, damit Ihr Code zu objektorientierte Programmierkonzepte . Aus Ihrer Frage klingt es, als würden Sie darüber nachlesen wollen. Ich würde zuerst Head First Java lesen, dann vielleicht einige andere Bücher auf objektorientierte Programmierung in Java . Danach würde ich mir einige Designmuster ansehen.
Es gibt kein # include in Java. Sie können die import-Anweisung verwenden, um Klassen und Schnittstellen in Ihrer Datei verfügbar zu machen.
Eigentlich ... Es gibt eine Möglichkeit, die gleiche Semantik zu haben wie in Cs #include (das Schlüsselwort wurde später von C ++ ausgeliehen, um schick auszusehen ...). Es ist einfach nicht mit den gleichen Worten definiert, aber es macht genau das, wonach Sie suchen.
Sehen wir zuerst, was Sie mit #include in C ++ machen, um die Frage zu verstehen:
#defines
, und das ist es ziemlich genau.
Für die Strukturdefinitionen gibt es keinen Sinn, das ist Old-School C: In C ++ definierst du struct {}
nicht mehr für Zeitalter, du definierst class
-Strukturen mit Eigenschaften und Accessor-Methoden, es ist dasselbe in Java : no typedef struct {}
auch hier.
Dafür haben Sie die Deklaration "interface", siehe Ссылка
Es macht genau das, wonach Sie suchen:
%Vor%Dann zu verwenden:
%Vor%Lesen Sie den obigen Link, es ist voll von nützlichen Fällen.