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!

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!

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
- Czym jest programowanie obiektowe?
- Definiowanie klas i obiektów
- Właściwości i metody
- Konstruktory w C#
- Enkapsulacja i modyfikatory dostępu
- Dziedziczenie: ponowne wykorzystanie kodu
- Polimorfizm i przesłanianie metod