Eine Faustregel: Fragen Sie sich: "Ist es sinnvoll, diese Methode aufzurufen, auch wenn noch kein Objekt erstellt wurde?" Wenn ja, sollte es definitiv statisch sein.
In einer Klasse haben Car
Sie möglicherweise eine Methode:
double convertMpgToKpl(double mpg)
... was statisch wäre, weil man vielleicht wissen möchte, in was 35mpg konvertiert, selbst wenn noch niemand ein gebaut hat Car
. Aber diese Methode (die die Effizienz einer bestimmten festlegt Car
):
void setMileage(double mpg)
... kann nicht statisch sein, da es unvorstellbar ist, die Methode aufzurufen, bevor eine erstellt Car
wurde.
(Übrigens ist das Gegenteil nicht immer der Fall: Manchmal haben Sie eine Methode, die zwei Car
Objekte umfasst, und möchten dennoch, dass sie statisch ist. ZB:
Car theMoreEfficientOf( Car c1, Car c2 )
Obwohl dies in eine nicht statische Version konvertiert werden könnte, würden einige argumentieren, dass Car
Sie einen Anrufer nicht zwingen sollten, eine Car
als das Objekt auszuwählen, das Sie aufrufen , da es keine "privilegierte" Auswahl gibt, die wichtiger ist Methode auf. Diese Situation macht jedoch einen relativ kleinen Teil aller statischen Methoden aus.)