Dart Academy · Lektion

Polymorfism genom delade typer

Programmera mot en typ, inte en klass

Lektion 3 av 413 steg

Polymorfism genom delade typer är en gratis lektion i Dart Academy på CoddyKit. Detta är lektion 3 av 4. 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 Dart Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Dart Academy innehåller totalt 4 lektioner.

Vad polymorfism innebär

Polymorfism gör att en typ kan representera många andra. Du anropar en metod på en gemensam typ, och varje objekt svarar på sitt eget sätt.

Programmera mot en typ

I stället för att ange en konkret klass förlitar du dig på en gemensam supertyp. Koden fungerar med allt som följer den strukturen.

void render(Shape s) => print(s.area());

En gemensam bastyp

Börja med en abstrakt basklass som deklarerar den gemensamma metod som varje subtyp kommer att tillhandahålla på sitt eget sätt.

abstract class Shape {
  double area();
}

Många subtyper, en struktur

Varje subtyp implementerar area på sitt eget sätt, men alla behandlas fortfarande som en Shape.

class Circle extends Shape {
  double area() => 28.3;
}

Dynamisk dispatch

Vid körning väljer Dart metoden i det verkliga objektet. Denna dispatch innebär att samma anrop kör olika kod för olika objekt.

Shape s = Circle();
s.area(); // runs Circle.area

En lista med olika former

Eftersom de delar typ kan du samla blandade objekt i en List och behandla dem enhetligt.

List<Shape> shapes = [Circle(), Square()];

Polymorfisk loopning

En enda loop hanterar alla former. Du behöver aldrig kontrollera den konkreta klassen; rätt area körs automatiskt.

for (var s in shapes) {
  print(s.area());
}

Öppen för utbyggnad

Lägg till en helt ny Shape-subtyp senare, så använder befintliga loopar den direkt. Polymorfism håller koden öppen för utbyggnad.

class Triangle extends Shape {
  double area() => 12.0;
}

Gränssnitt fungerar på samma sätt

Gemensamma typer kan även komma från implements. Alla klasser som implementerar gränssnittet kan direkt användas i samma kod.

void log(Printable p) => p.printOut();

Inga typkontroller behövs

Bra polymorf kod använder sällan is-kontroller. Den gemensamma typen garanterar redan att metoden finns, vilket håller logiken ren.

Varför det spelar roll

Polymorfism tar bort långa if-else-kedjor och upprepade switch-satser. Du skriver flexibel kod som anpassar sig till nya typer utan ändringar. 🌱

Snabb kontroll

En snabb fråga om polymorfism.

Sammanfattning

Polymorfism innebär att programmera mot en gemensam typ, samtidigt som varje objekt beter sig på sitt eget sätt. Det håller koden flexibel och öppen för nya subtyper. ✨

Gratis att börja

Lär dig Dart 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
30
Lektioner
120

Vanliga frågor

Är lektionen ”Polymorfism genom delade typer” gratis?

Ja – hela texten till ”Polymorfism genom delade typer” 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 Dart Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Dart Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Polymorfism genom delade typer”?

Programmera mot en typ, inte en klass Ni övar på Dart 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 Dart Academy?

Du behöver inga förkunskaper. Utbildningen i Dart 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 3 av 4.

Hur lång tid tar lektionen ”Polymorfism genom delade typer”?

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 Dart Academy-lektionen?

Ja. Varje Dart 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

  1. Abstrakta klasser och abstrakta metoder
  2. Implicita gränssnitt och implements
  3. Polymorfism genom delade typer
  4. Komposition framför arv
← Tillbaka till Dart Academy