C# Snabbreferens
  • C# snabbreferens
  • Lathund: Skapa projekt
  • Lathund: koda i konsolen
  • Lathund: koda i WPF
  • Kompilering och publicering
  • Externa resurser
  • Grundläggande
    • Datatyper […]
      • String
      • Tuples
      • Enum
    • Fel
    • Typkonvertering
    • Operatorer
    • Boolska satser
    • Konsolen (Console)
    • If-satser
    • Loopar
    • Listor och arrayer
    • Slump (Random)
    • Strings
    • Metoder
    • Använda bibliotek (using)
    • Delegates, events och lambdas
    • Matematik (Math)
    • Vektorer (Numerics)
    • Datum och tid
    • Try-catch och Exception
    • Namngivning
    • Begrepp
    • Reference vs value types
    • Projektstruktur
    • Dotnet i terminalen
  • Filhantering
    • Filsökvägar
    • Läsa och skriva
    • Filer och mappar
    • Open, close, using
    • Serialisering […]
      • JSON-serialisering
      • XML-serialisering
    • Resursfiler
    • Filformat
      • JSON
  • Klasser och objektorientering
    • Översikt objektorientering
    • Lathund för klassdesign
    • Klasser och instanser
    • Struct
    • Public, private och protected
    • Klassdiagram
    • Klassmetoder
    • Konstruktorer
    • Arv
    • Komposition
    • Inkapsling och properties
    • Static
    • Polymorfism […]
      • Virtual, override
    • Generiska klasser
    • Abstract
    • Interface
    • Attribut
  • Annat
    • RayLib […]
      • Raylib setup
      • Fönster i Raylib
      • Grundläggande grafik
      • Geometriska former
      • Bilder och texturer
        • Texture
        • Image
      • Input
      • Text
      • Rectangle
      • Kollisioner
      • Kamera
      • Ljud
      • Raylib-CSharp*
    • MonoGame […]
      • Monogame-projekt*
      • MCGB Editor*
      • Input*
      • Grafik*
      • Kollisioner
      • Ljud*
    • Nätverk och internet […]
      • CRUD, HTTP och REST
      • URL:er och REST
      • RESTful client*
      • Thunder
      • RESTful server (Minimal API)
        • Swagger och OpenAPI
      • RESTful server (Web API) […]
        • Controllers
        • Models/dataklasser
        • Tester med RESTer
    • Linq
      • Linq-metoder
      • Linq-queries
    • Databaser
      • SQLite-kommandon
      • SQLite och VSCode
      • C# och SQLite
      • Entity Framework Core
    • Threading
      • Thread
      • Task
    • Pseudokod och diagram
    • Windows UI
      • WPF
      • XAML*
      • WinUI*
  • Mjukvara
    • Dotnet SDK
    • Visual Studio Code […]
      • Extensions
      • Inställningar
      • Debugging
      • Snabbkommandon
      • Snippets
      • Felsökning
    • Git & GitHub […]
      • Git-begrepp
    • Andra verktyg
  • Tekniker
    • Begränsa input
    • Game states
    • Gå igenom en array (eller lista)
    • Länkade listor och andra strukturer
    • Ta bort saker ur listan man går igenom
    • 2D-spelbräden
    • Timers
  • CONTRIBUTING
Powered by GitBook
On this page

Was this helpful?

  1. Klasser och objektorientering

Arv

När man bygger en klass som bygger på en annan klass så kallas det arv. Arvet innebär att subklassen får samma variabler och metoder som basklassen. Arv är alltså ett sätt att återanvända kod.

OBSERVERA: Arv symboliserar en "är-en-relation", det vill säga subklassen ska kunna sägas vara en underkategori till basklassen. En Hero är en sorts Character. En Goomba är en sorts Enemy. Ett svärd är en sorts vapen.

Man skapar ett arv genom att skriva ett kolon (:) efter klassnamnet, följt av namnet på basklassen. Så om man vill att klassen Hero ska ärva från klassen Character så skriver man class Hero: Character när man skapar klassen.

Character.cs
class Character
{
  public string name;
  public int hp = 100;
  public int x = 0;
  public int y = 0;

  public void Hurt(int amount)
  {
    hp -= amount;
  }
}
Hero.cs
class Hero: Character
{
  int _xp = 0;
  int _level = 1;
  
  public AddExperience(int amount)
  {
    _xp += amount;
    _level = 1 + _xp / 10;
  }
}
Program.cs
Hero myHero = new Hero();

myHero.name = "Britt-Marie";

myHero.Hurt(3);
myHero.AddExperience(12);

Hero bygger på Character, så alla instanser av Hero-klassen har egna name, hp, x och y-variabler. Dessutom har de egna kopior av Hurt-metoden, som då påverkar Hero-instansens egen hp.

Dessutom tillför Hero-klassen ett par egna variabler och en egen metod.

PreviousKonstruktorerNextKomposition

Last updated 1 year ago

Was this helpful?