Polymorfism och metodöverskuggning
Bemästra polymorfism för att skapa flexibel och återanvändbar kod genom metodöverskuggning
Polymorfism och metodöverskuggning är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 7 av 7. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 7 lektioner.
Introduktion till polymorfism
Polymorfism och metodöverskuggning
Välkommen till nästa lektion! I den här lektionen får du lära dig om polymorfism, ett grundläggande koncept inom objektorienterad programmering, och hur det gör att du kan åsidosätta metoder för att skapa flexibel och återanvändbar kod. Nu sätter vi igång!

Vad är polymorfism?
Polymorfism betyder "många former" och gör att objekt från olika klasser kan behandlas som objekt av en gemensam basklass. Det ger flexibilitet och återanvändbarhet i koden.
Exempel: En metod kan fungera på olika sätt beroende på vilken typ av objekt den arbetar med.
Viktig punkt: I C# uppnås polymorfism genom metodöverskuggning och gränssnitt.
Förstå metodöverskuggning
Metodöverskuggning gör att en härledd klass kan tillhandahålla en specifik implementation av en metod som redan har definierats i basklassen. Använd nyckelordet virtual i basklassen och nyckelordet override i den härledda klassen. Exempel:
Tips: Metodöverskuggning säkerställer att rätt metod anropas för ett objekt, oavsett dess referenstyp.
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.
}
}
Använda polymorfism
Polymorfism gör att du kan skriva kod som fungerar med olika typer av objekt genom ett gemensamt gränssnitt. Exempel:
Viktig punkt: Polymorfism gör att du kan skriva mer generell och återanvändbar kod.
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
}
}
}
Använda nyckelordet base med metodöverskuggning
Nyckelordet base används för att anropa en metod från basklassen i den åsidosatta metoden. Exempel:
Tips: Använd base när du vill behålla basklassens funktionalitet i en åsidosatt metod.
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.
}
}
Abstrakta klasser och metoder
Abstrakta klasser fungerar som mallar för härledda klasser. De kan innehålla abstrakta metoder som måste åsidosättas i den härledda klassen. Exempel:
Viktig punkt: Abstrakta metoder tvingar härledda klasser att tillhandahålla en egen implementation.
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.
}
}
Övningsuppgift
Skapa en abstrakt klass Shape med en abstrakt metod CalculateArea(). Skapa klasserna Rectangle och Circle som implementerar CalculateArea(). Exempel:
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());
}
}
Bästa praxis för polymorfism
Här följer några rekommendationer:
- Använd polymorfism för att förenkla koden och undvika duplicering.
- Åsidosätt endast de metoder som kräver specifikt beteende i härledda klasser.
- Använd abstrakta klasser och metoder för gemensamma gränssnitt mellan härledda klasser.
Tips: Polymorfism gör koden enklare att utöka och underhålla.
Bra jobbat!
Grattis! Du har lärt dig att använda polymorfism och metodöverskuggning för att skriva flexibel och återanvändbar kod. I nästa lektion utforskar vi hur du arbetar med gränssnitt för att uppnå abstraktion och implementera flera beteenden. Fortsätt koda!

Lär dig C# med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 93
- Lektioner
- 346
Vanliga frågor
Är lektionen ”Polymorfism och metodöverskuggning” gratis?
Ja – hela texten till ”Polymorfism och metodöverskuggning” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 7 lektioner.
Vad lär jag mig i ”Polymorfism och metodöverskuggning”?
Bemästra polymorfism för att skapa flexibel och återanvändbar kod genom metodöverskuggning Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig C# Academy?
Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 7 av 7.
Hur lång tid tar lektionen ”Polymorfism och metodöverskuggning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här C# Academy-lektionen?
Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Vad är objektorienterad programmering?
- Definiera klasser och objekt
- Förstå egenskaper och metoder
- Konstruktorer i C#
- Inkapsling och åtkomstmodifierare
- Arv: återanvänd kod
- Polymorfism och metodöverskuggning