Klasy statyczne
Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 13 z 70.
Gdy klasa zawiera tylko składowe statyczne i nigdy nie musisz tworzyć jej instancji, możesz zadeklarować całą klasę jako static. Informuje to kompilator, że nie można tworzyć instancji tej klasy i że może ona zawierać tylko składowe statyczne.
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;
}
}Używasz klas statycznych tak samo jak składowych statycznych, wywołując je bezpośrednio przez nazwę klasy:
int result = MathHelper.Square(5);
double pi = MathHelper.Pi;Klasy statyczne mają ważne ograniczenia. Nie możesz utworzyć ich instancji za pomocą new, nie mogą mieć konstruktorów instancji i nie można po nich dziedziczyć. Mogą zawierać wyłącznie statyczne pola, właściwości i metody.
Klasy Console i Math, których używasz, są doskonałymi przykładami klas statycznych. Zapewniają przydatne funkcje bez potrzeby przechowywania stanu obiektu. Klasy statyczne idealnie nadają się do grupowania powiązanych metod pomocniczych lub stałych, które nie wymagają danych specyficznych dla żadnej instancji.
Wyzwanie
ŁatwyZbudujmy narzędzie do konwersji temperatur, używając klasy statycznej do grupowania powiązanych metod pomocniczych, które nie wymagają stanu obiektu.
Utworzysz dwa pliki, aby uporządkować kod:
TemperatureConverter.cs: Zdefiniuj klasę statyczną o nazwieTemperatureConverterw przestrzeni nazwUtilities. Ta klasa powinna zawierać:- Pole statyczne
AbsoluteZeroCelsiusustawione na-273.15 - Metodę statyczną
CelsiusToFahrenheit(double celsius), która konwertuje stopnie Celsjusza na stopnie Fahrenheita za pomocą wzoru:(celsius * 9 / 5) + 32 - Metodę statyczną
FahrenheitToCelsius(double fahrenheit), która konwertuje stopnie Fahrenheita na stopnie Celsjusza za pomocą wzoru:(fahrenheit - 32) * 5 / 9 - Metodę statyczną
IsAboveAbsoluteZero(double celsius), która zwracatrue, jeśli temperatura jest powyżej zera absolutnego
- Pole statyczne
Program.cs: W głównym pliku użyj klasy statycznej do wykonania konwersji. Odczytaj z wejścia wartość temperatury w stopniach Celsjusza, a następnie wyświetl wyniki konwersji i walidacji.
Otrzymasz jedno dane wejściowe: wartość temperatury w stopniach Celsjusza.
Wyświetl wyniki w tym formacie:
{celsius}C = {fahrenheit}F
{fahrenheit}F = {convertedBack}C
Above Absolute Zero: {True/False}
Absolute Zero: {AbsoluteZeroCelsius}CNa przykład, jeśli dane wejściowe to 25, wynikiem powinno być:
25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15CPamiętaj, że klas statycznych nie można instancjonować — wszystkie metody wywołasz bezpośrednio na nazwie klasy, na przykład TemperatureConverter.CelsiusToFahrenheit(25).
Spróbuj swoich sił
using System;
using Utilities;
class Program
{
public static void Main(string[] args)
{
// Odczytaj temperaturę w stopniach Celsjusza
double celsius = Convert.ToDouble(Console.ReadLine());
// TODO: Użyj metod statycznych TemperatureConverter, aby:
// 1. Przeliczyć celsius na fahrenheit
// 2. Przeliczyć fahrenheit z powrotem na celsius
// 3. Sprawdzić, czy temperatura jest powyżej zera bezwzględnego
// 4. Pobrać stałą zera bezwzględnego
// TODO: Wypisz wyniki w wymaganym formacie:
// {celsius}C = {fahrenheit}F
// {fahrenheit}F = {convertedBack}C
// Above Absolute Zero: {True/False}
// Absolute Zero: {AbsoluteZeroCelsius}C
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrznePrzestrzenie nazw i dyrektywyWprowadzenie do klas i obiektówSłowo kluczowe „this”Metody i parametryPola a właściwościKonstruktoryInicjalizatory obiektówPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawowa składnia dziedziczenia (:)Słowo kluczowe 'base'Słowa kluczowe virtual i overrideKlasy sealedBazowa klasa 'object'Powtórzenie – hierarchia pracowników7Zaawansowane funkcje
Przeciążanie operatorówIndeksery (this[])Nadpisywanie ToString()Metody rozszerzającePodsumowanie – własna lista2Właściwości i składowe statyczne
Właściwości automatyczneWłaściwości tylko do odczytu i zapisuPola i metody statyczneKlasy statyczneSkładowe z ciałem wyrażeniowym5Polimorfizm i interfejsy
Polimorfizm czasu kompilacji a czasu wykonaniaInterfejs a klasa abstrakcyjnaWiele interfejsówJawne implementowanie interfejsówRzutowanie w górę i w dółPowtórka — kalkulator kształtów8Zaawansowane koncepcje OOP
Kompozycja zamiast dziedziczeniaTypy generyczne (klasy i metody)Delegaty i zdarzeniaAtrybuty i refleksjaIDisposable i instrukcja usingPodstawy wstrzykiwania zależności11Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu3Architektura klas
Dane instancji a dane statyczneSłowa kluczowe 'readonly' i 'const'Pola zapasowePowtórzenie — menedżer kont bankowych6Hermetyzacja
Modyfikatory dostępuWłaściwości w hermetyzacjiImplementacja ukrywania danychWzorce niezmiennościPowtórka — dane studentów9Argumenty zmiennej liczby
Słowo kluczowe „params”Parametry opcjonalneArgumenty nazwanePrzeciążanie metodPoćwicz samodzielnie: Kompilator C# online