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 CarSie 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 Carwurde.
(Übrigens ist das Gegenteil nicht immer der Fall: Manchmal haben Sie eine Methode, die zwei CarObjekte 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 CarSie einen Anrufer nicht zwingen sollten, eine Carals 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.)