0Pricing
C# Academy · Lekcja

Polimorfizm i przesłanianie metod

Opanuj polimorfizm, aby tworzyć elastyczny kod wielokrotnego użytku dzięki przesłanianiu metod

Polimorfizm i przesłanianie metod to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 7 z 7. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 7 lekcji w sumie.

Wprowadzenie do polimorfizmu

Polimorfizm i przesłanianie metod

Witamy w kolejnej lekcji! W tej lekcji dowiedzą się Państwo, czym jest polimorfizm — podstawowe pojęcie programowania obiektowego — oraz jak przesłaniać metody, aby tworzyć elastyczny kod, który można ponownie wykorzystywać. Zaczynajmy!

Polimorfizm i przesłanianie metod — ilustracja 1

Czym jest polimorfizm?

Czym jest polimorfizm?

Polimorfizm oznacza „wiele form” i pozwala traktować obiekty różnych klas jako obiekty wspólnej klasy bazowej. Dzięki temu kod staje się elastyczny i można go ponownie wykorzystywać.

Przykład: Metoda może działać różnie w zależności od typu obiektu, na którym operuje.

Najważniejsza informacja: W języku C# polimorfizm uzyskuje się za pomocą przesłaniania metod i interfejsów.

Zrozumienie przesłaniania metod

Zrozumienie przesłaniania metod

Przesłanianie metod pozwala klasie pochodnej dostarczyć konkretną implementację metody, która została już zdefiniowana w klasie bazowej. W klasie bazowej należy użyć słowa kluczowego virtual, a w klasie pochodnej — słowa kluczowego override. Przykład:

Wskazówka: Przesłanianie metod gwarantuje, że dla danego obiektu zostanie wywołana właściwa metoda, niezależnie od typu referencji, przez którą obiekt jest używany.

using System;

class Animal {
    public virtual void Speak() {
        Console.WriteLine("The animal makes a sound.");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("The dog barks.");
    }
}

class Cat : Animal {
    public override void Speak() {
        Console.WriteLine("The cat meows.");
    }
}

class Program {
    static void Main() {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        myDog.Speak(); // Outputs: The dog barks.
        myCat.Speak(); // Outputs: The cat meows.
    }
}

Używanie polimorfizmu

Używanie polimorfizmu

Polimorfizm pozwala pisać kod działający z obiektami różnych typów za pośrednictwem wspólnego interfejsu. Przykład:

Najważniejsza informacja: Polimorfizm pozwala pisać bardziej ogólny kod, który można ponownie wykorzystywać.

using System;

class Animal {
    public virtual void Speak() {
        Console.WriteLine("The animal makes a sound.");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("The dog barks.");
    }
}

class Cat : Animal {
    public override void Speak() {
        Console.WriteLine("The cat meows.");
    }
}

class Program {
    static void Main() {
        Animal[] animals = { new Dog(), new Cat() };

        foreach (Animal animal in animals) {
            animal.Speak(); // Calls the appropriate method for each object
        }
    }
}

Używanie słowa kluczowego base podczas przesłaniania

Używanie słowa kluczowego base podczas przesłaniania

Słowo kluczowe base służy do wywołania metody z klasy bazowej w przesłoniętej metodzie. Przykład:

Wskazówka: Proszę używać base, gdy chcą Państwo zachować funkcjonalność klasy bazowej w przesłoniętej metodzie.

using System;

class Animal {
    public virtual void Speak() {
        Console.WriteLine("The animal makes a sound.");
    }
}

class Dog : Animal {
    public override void Speak() {
        base.Speak(); // Calls the base class method
        Console.WriteLine("The dog barks.");
    }
}

class Program {
    static void Main() {
        Dog myDog = new Dog();
        myDog.Speak(); // Outputs: The animal makes a sound. The dog barks.
    }
}

Klasy i metody abstrakcyjne

Klasy i metody abstrakcyjne

Klasy abstrakcyjne stanowią szablon dla klas pochodnych. Mogą zawierać metody abstrakcyjne, które należy przesłonić w klasie pochodnej. Przykład:

Najważniejsza informacja: Metody abstrakcyjne wymuszają na klasach pochodnych dostarczenie własnej implementacji.

using System;

abstract class Animal {
    public abstract void Speak(); // Abstract method
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("The dog barks.");
    }
}

class Program {
    static void Main() {
        Animal myDog = new Dog();
        myDog.Speak(); // Outputs: The dog barks.
    }
}

Zadanie praktyczne

Zadanie praktyczne

Proszę utworzyć klasę abstrakcyjną Shape z abstrakcyjną metodą CalculateArea(). Następnie proszę utworzyć klasy pochodne Rectangle i Circle, które implementują metodę CalculateArea(). Przykład:

using System;

abstract class Shape {
    public abstract double CalculateArea();
}

class Rectangle : Shape {
    public double Width { get; set; }
    public double Height { get; set; }

    public override double CalculateArea() {
        return Width * Height;
    }
}

class Circle : Shape {
    public double Radius { get; set; }

    public override double CalculateArea() {
        return Math.PI * Radius * Radius;
    }
}

class Program {
    static void Main() {
        Shape rectangle = new Rectangle { Width = 4, Height = 5 };
        Shape circle = new Circle { Radius = 3 };

        Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
        Console.WriteLine("Circle Area: " + circle.CalculateArea());
    }
}

Najlepsze praktyki dotyczące polimorfizmu

Najlepsze praktyki dotyczące polimorfizmu

Oto kilka najważniejszych praktyk:

  • Proszę używać polimorfizmu, aby upraszczać kod i unikać duplikowania.
  • Należy przesłaniać tylko te metody, które wymagają określonego zachowania w klasach pochodnych.
  • Proszę używać klas i metod abstrakcyjnych do definiowania wspólnych interfejsów dla klas pochodnych.

Wskazówka: Polimorfizm ułatwia rozszerzanie i utrzymywanie kodu.

Świetna robota!

Świetna robota!

Gratulacje! W tej lekcji nauczyli się Państwo używać polimorfizmu i przesłaniania metod do tworzenia elastycznego kodu, który można ponownie wykorzystywać. W kolejnej lekcji zajmiemy się interfejsami, aby uzyskać abstrakcję i implementować wiele różnych zachowań. Kodujmy dalej!

Polimorfizm i przesłanianie metod — ilustracja 10

Często zadawane pytania

Czy lekcja „Polimorfizm i przesłanianie metod” jest bezpłatna?

Tak — pełny tekst „Polimorfizm i przesłanianie metod” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 7 lekcji w sumie.

Co nauczysz się w „Polimorfizm i przesłanianie metod”?

Opanuj polimorfizm, aby tworzyć elastyczny kod wielokrotnego użytku dzięki przesłanianiu metod Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 7 z 7.

Ile czasu zajmuje lekcja „Polimorfizm i przesłanianie metod”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym jest programowanie obiektowe?
  2. Definiowanie klas i obiektów
  3. Właściwości i metody
  4. Konstruktory w C#
  5. Enkapsulacja i modyfikatory dostępu
  6. Dziedziczenie: ponowne wykorzystanie kodu
  7. Polimorfizm i przesłanianie metod
← Powrót do C# Academy