4050 Abstrakta klasser - Sak

Lärandemål

  • Känna till skillnaden mellan en abstrakt klass och en vanlig klass.
  • Kunna använda nyckelord abstract och override på avsett vis.

Genomgång

Be din lärare att berätta om abstrakta klasser. Visas med hjälp av klassen Animal.

Klassen Animal från tidigare

class Animal
{
  protected int age;

  public Animal(int anAge)
  {
    age = anAge;
  }

  public void Act()
  {
      Console.WriteLine("okänt ljud");
  }
}

Klassen Animal med arv

Jämför koden ovan med den nedan. Ser du skillnaderna? Ordet abstract har lagts till på två ställen.

Objekt kan ej göras av abstrakta klasser.

Abstrakta metoder har ingen kropp. Metoden måste implementeras i ärvande klasser.

abstract class Animal
{
  protected int age;

  public Animal(int anAge)
  {
    age = anAge;
  }

  public abstract void Act();
}

Klassdiagrammet ser ut som följer.

Klassen Cat

Klassen Cat nedan passar ihop med klassen Animal ovan.

class Cat : Animal
{
  public override void Act()
  {
    Console.WriteLine("mjau");
  }
}

Din uppgift

Skriv om klassen Sak så att den blir en abstrakt klass. Det ska inte gå att skapa objekt av klassen Sak. Kanske behöver du skriva om de andra klasserna lite också.