4031 Intro arv - Animal
Lärandemål
Ha en grundläggande förståelse för vad arv innebär:
- Känna till innebörden av begreppen: superklass, överklass , subklass, underklass, subklassen är en superklass
- Känna till objektvariablers och metoders synlighet i underklassen vid arv och hur den påverkas av nycklorden:
public
,protected
ochprivate
.
Teori
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