4031 Intro arv - Animal

Klasserna Cat, Cow och Dog ärver klassen Animal. Objektvariabler och metoder som finns i Animal finns tillgängliga i ärvande klasser. Klassen Animal kallas superklass eller överklass och de tre andra klasserna kallas subklasser eller underklasser.

Man säger att Cat är en Animal.

Klassen Animal

Objektvariablernas synlighet har ändrats till protected för att de ska finnas tillgängliga i subklasser.

  using System;
  namespace Animal
  {
      class Animal
      {
          protected int age;
          protected String sound;

          public Animal()
          {
              age = 1;
              sound = "hej hej";
          }

          public void Act() 
          { 
              Console.WriteLine(sound);
          }
      }
  }

Klassen Cat

Klassen Cat ärver klassen Animal detta visas med koden:

  class Cat : Animal 

Metoden Act ärvs från klassen Animal. Likaså ärvs objektvariablerna age och sound. Dessa har synligheten satt till protected i Animal för att finnas tillgängliga i underklasser.

  using System;
  namespace Animal
  {
      class Cat : Animal
      {
          //konstruktor
          public Cat(int anAge)
          {
              age = anAge;
              sound = "mjau";
          }
      }
  }

Klasserna Cow och Dog

På samma sätt som Cat.

  using System;
  namespace Animal
  {
      class Cow : Animal
      {
          //konstruktor
          public Cow(int anAge)
          {
              age = anAge;
              sound = "mu muu";
          }
      }
  }

  using System;
  namespace Animal
  {
      class Dog: Animal
      {
          //konstruktor
          public Cat(int anAge)
          {
              age = anAge;
              sound = "vov vov";
          }
      }
  }

Klassen Zoo

Vi vill ha en lista med djur istället för en lista för varje sorts djur som vi hade innan vi introducerade arv. Listan animals kan innehålla objekt av klassen Animal eller av en subklass till Animal.

  using System;
  using System.Collections.Generic;
  using System.Text;

  namespace Animal
  {
      class Zoo
      {
          private List<Animal> animals;

          public Zoo()
          {
              animals = new List<Animal>();

          }
          public void Add(Animal anAnimal)
          {
              animals.Add(anAnimal);
          }
          public void Run()
          {
              foreach (Animal djuret in animals)
              {
                  djuret.Act();
              }
          }
      }
  }

Klassen Program med metoden Main

  using System;
  namespace Animal
  {
      class Program
      {
          static void Main(string[] args)
          {
              Zoo zoo = new Zoo();
              zoo.Add(new Cat(3));
              zoo.Add(new Cat(1));
              zoo.Add(new Cat(3));
              zoo.Add(new Dog(4));
              zoo.Add(new Dog(12));
              zoo.Add(new Cow(7));
              zoo.Add(new Cow(7));
              zoo.Add(new Cow(7));
              zoo.Run();

              // Keep the console window open in debug mode.
              Console.WriteLine("Press any key to exit.");
              Console.ReadKey();
          }
      }
  }

Körning av programmet ger utskriften:

  mjau 
  mjau
  mjau 
  vov vov
  vov vov
  mu muu
  mu muu
  mu muu