Statische Klassen
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 13 von 70.
Wenn eine Klasse nur statische Member enthält und Sie niemals Instanzen davon erstellen müssen, können Sie die gesamte Klasse als static deklarieren. Dies teilt dem Compiler mit, dass die Klasse nicht instanziiert werden kann und nur statische Member enthalten kann.
public static class MathHelper
{
public static double Pi = 3.14159;
public static int Square(int number)
{
return number * number;
}
public static int Add(int a, int b)
{
return a + b;
}
}Sie verwenden statische Klassen auf dieselbe Weise wie statische Member, indem Sie sie direkt über den Klassennamen aufrufen:
int result = MathHelper.Square(5);
double pi = MathHelper.Pi;Statische Klassen haben wichtige Einschränkungen. Sie können keine Instanz mit new erstellen, sie können keine Instanzkonstruktoren haben und sie können nicht vererbt werden. Sie können nur statische Felder, Eigenschaften und Methoden enthalten.
Die Klassen Console und Math, die Sie verwendet haben, sind perfekte Beispiele für statische Klassen. Sie bieten Hilfsfunktionen, ohne einen Objektzustand zu benötigen. Statische Klassen sind ideal für die Gruppierung verwandter Hilfsmethoden oder Konstanten, die keine instanzspezifischen Daten erfordern.
Aufgabe
EinfachLassen Sie uns ein Temperaturumrechnungs-Utility erstellen, indem wir eine statische Klasse verwenden, um verwandte Hilfsmethoden zu gruppieren, die keinen Objektzustand erfordern.
Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:
TemperatureConverter.cs: Definieren Sie eine statische Klasse namensTemperatureConverterim NamespaceUtilities. Diese Klasse sollte Folgendes enthalten:- Ein statisches Feld
AbsoluteZeroCelsius, das auf-273.15gesetzt ist - Eine statische Methode
CelsiusToFahrenheit(double celsius), die Celsius in Fahrenheit umrechnet, unter Verwendung der Formel:(celsius * 9 / 5) + 32 - Eine statische Methode
FahrenheitToCelsius(double fahrenheit), die Fahrenheit in Celsius umrechnet, unter Verwendung der Formel:(fahrenheit - 32) * 5 / 9 - Eine statische Methode
IsAboveAbsoluteZero(double celsius), dietruezurückgibt, wenn die Temperatur über dem absoluten Nullpunkt liegt
- Ein statisches Feld
Program.cs: Verwenden Sie in Ihrer Hauptdatei die statische Klasse, um Umrechnungen durchzuführen. Lesen Sie einen Temperaturwert in Celsius von der Eingabe ein und zeigen Sie dann die Umrechnungen und die Validierung an.
Sie erhalten eine Eingabe: einen Temperaturwert in Celsius.
Geben Sie die Ergebnisse in diesem Format aus:
{celsius}C = {fahrenheit}F
{fahrenheit}F = {convertedBack}C
Above Absolute Zero: {True/False}
Absolute Zero: {AbsoluteZeroCelsius}CWenn die Eingabe beispielsweise 25 ist, sollte die Ausgabe wie folgt aussehen:
25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15CDenken Sie daran, dass statische Klassen nicht instanziiert werden können – Sie rufen alle Methoden direkt über den Klassennamen auf, wie zum Beispiel TemperatureConverter.CelsiusToFahrenheit(25).
Spickzettel
Eine static Klasse kann nur statische Member enthalten und kann nicht instanziiert werden. Sie wird verwendet, um verwandte Hilfsmethoden und Konstanten zu gruppieren, die keinen Objektzustand erfordern.
public static class MathHelper
{
public static double Pi = 3.14159;
public static int Square(int number)
{
return number * number;
}
public static int Add(int a, int b)
{
return a + b;
}
}Auf statische Klassenmember wird direkt über den Klassennamen zugegriffen:
int result = MathHelper.Square(5);
double pi = MathHelper.Pi;Einschränkungen von statischen Klassen:
- Können nicht mit
newinstanziiert werden - Können keine Instanzkonstruktoren haben
- Können nicht vererbt werden
- Können nur statische Felder, Eigenschaften und Methoden enthalten
Häufige Beispiele sind die Klassen Console und Math, die Hilfsfunktionen bereitstellen, ohne einen Objektzustand zu benötigen.
Probier es selbst
using System;
using Utilities;
class Program
{
public static void Main(string[] args)
{
// Lies die Temperatur in Celsius ein
double celsius = Convert.ToDouble(Console.ReadLine());
// TODO: Verwende statische Methoden von TemperatureConverter, um:
// 1. celsius in fahrenheit umzuwandeln
// 2. fahrenheit zurück in celsius umzuwandeln
// 3. Zu prüfen, ob die Temperatur über dem absoluten Nullpunkt liegt
// 4. Die Konstante für den absoluten Nullpunkt abzurufen
// TODO: Gib die Ergebnisse im erforderlichen Format aus:
// {celsius}C = {fahrenheit}F
// {fahrenheit}F = {convertedBack}C
// Über dem absoluten Nullpunkt: {True/False}
// Absoluter Nullpunkt: {AbsoluteZeroCelsius}C
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten