Menu
Coddy logo textTech

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.

challenge icon

Wyzwanie

Łatwy

Zbudujmy 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 nazwie TemperatureConverter w przestrzeni nazw Utilities. Ta klasa powinna zawierać:
    • Pole statyczne AbsoluteZeroCelsius ustawione 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 zwraca true, jeśli temperatura jest powyżej zera absolutnego
  • 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}C

Na przykład, jeśli dane wejściowe to 25, wynikiem powinno być:

25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15C

Pamię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
        
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online