Afledte Klasser
Når du siger, at en klasse er afledt af en anden klasse, betyder det, at den har alle felter og metoder fra forældreklassen, og derudover kan den afledte klasse også indeholde yderligere felter og metoder.

En afledt klasse (også kaldet en børneklasse) er en klasse, som arver egenskaberne fra en anden klasse, mens en baseklasse (også kaldet en forældreklasse) er en klasse, der bliver arvet fra.
Syntaksen for at oprette en nedarvet klasse er følgende:
index.cs
1234567891011// Base class (parent class) public class BaseClass { // Fields and methods of the base class } // Derived class (child class) public class DerivedClass : BaseClass { // Additional fields and methods specific to the derived class }
Her er et eksempel med konkret kode:
index.cs
12345678910111213141516171819202122232425262728293031323334353637using System; // Base class (parent class) public class Animal { public string Name; public void Eat() { Console.WriteLine($"{Name} is eating."); } } // Derived class (child class) public class Dog : Animal { public void Bark() { Console.WriteLine($"{Name} is barking."); } } class ConsoleApp { static void Main() { // Creating an instance of the derived class Dog myDog = new Dog(); myDog.Name = "Buddy"; // Using inherited method from the base class myDog.Eat(); // Using method specific to the derived class myDog.Bark(); } }
I dette eksempel er Dog
den afledte klasse, der arver fra Animal
-basisklassen. Dog
-klassen har adgang til Name
-egenskaben og Eat
-metoden fra Animal
-klassen. Derudover introducerer den en ny metode, Bark
, som er specifik for Dog
-klassen.
Som illustreret i diagrammet, kan der være tilfælde, hvor en klasse arver fra en klasse, som allerede er en klasse fra en anden:
index.cs
123456789101112131415161718192021222324252627282930313233343536373839404142434445using System; // Base class public class Animal { public void Eat() { Console.WriteLine("Animal is eating."); } } // Intermediate class inheriting from Animal public class Mammal : Animal { public void GiveBirth() { Console.WriteLine("Mammal is giving birth."); } } // Derived class inheriting from Mammal public class Dog : Mammal { public void Bark() { Console.WriteLine("Dog is barking."); } } class Program { static void Main() { Dog myDog = new Dog(); // Methods from the base class myDog.Eat(); // Methods from the intermediate class myDog.GiveBirth(); // Methods from the derived class myDog.Bark(); } }
I et sådant tilfælde kaldes klassen på det øverste niveau for Superklassen. I dette tilfælde er Animal
superklassen. Et sådant tilfælde, hvor der er flere niveauer af arv, kaldes flerniveauarv.
I nogle sprog tillader det, at en klasse kan arve fra flere basisklasser; sådan en arv kaldes multipel arv. I C# kan en klasse kun have én overordnet klasse, så multipel arv er ikke mulig i C#.
1. I C#, hvilket nøgleord eller symbol bruges til at erklære en afledt klasse?
2. I fler-niveau arv, hvad kaldes klassen øverst?
3. Er fler-niveau arv muligt i C#?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 2.04
Afledte Klasser
Stryg for at vise menuen
Når du siger, at en klasse er afledt af en anden klasse, betyder det, at den har alle felter og metoder fra forældreklassen, og derudover kan den afledte klasse også indeholde yderligere felter og metoder.

En afledt klasse (også kaldet en børneklasse) er en klasse, som arver egenskaberne fra en anden klasse, mens en baseklasse (også kaldet en forældreklasse) er en klasse, der bliver arvet fra.
Syntaksen for at oprette en nedarvet klasse er følgende:
index.cs
1234567891011// Base class (parent class) public class BaseClass { // Fields and methods of the base class } // Derived class (child class) public class DerivedClass : BaseClass { // Additional fields and methods specific to the derived class }
Her er et eksempel med konkret kode:
index.cs
12345678910111213141516171819202122232425262728293031323334353637using System; // Base class (parent class) public class Animal { public string Name; public void Eat() { Console.WriteLine($"{Name} is eating."); } } // Derived class (child class) public class Dog : Animal { public void Bark() { Console.WriteLine($"{Name} is barking."); } } class ConsoleApp { static void Main() { // Creating an instance of the derived class Dog myDog = new Dog(); myDog.Name = "Buddy"; // Using inherited method from the base class myDog.Eat(); // Using method specific to the derived class myDog.Bark(); } }
I dette eksempel er Dog
den afledte klasse, der arver fra Animal
-basisklassen. Dog
-klassen har adgang til Name
-egenskaben og Eat
-metoden fra Animal
-klassen. Derudover introducerer den en ny metode, Bark
, som er specifik for Dog
-klassen.
Som illustreret i diagrammet, kan der være tilfælde, hvor en klasse arver fra en klasse, som allerede er en klasse fra en anden:
index.cs
123456789101112131415161718192021222324252627282930313233343536373839404142434445using System; // Base class public class Animal { public void Eat() { Console.WriteLine("Animal is eating."); } } // Intermediate class inheriting from Animal public class Mammal : Animal { public void GiveBirth() { Console.WriteLine("Mammal is giving birth."); } } // Derived class inheriting from Mammal public class Dog : Mammal { public void Bark() { Console.WriteLine("Dog is barking."); } } class Program { static void Main() { Dog myDog = new Dog(); // Methods from the base class myDog.Eat(); // Methods from the intermediate class myDog.GiveBirth(); // Methods from the derived class myDog.Bark(); } }
I et sådant tilfælde kaldes klassen på det øverste niveau for Superklassen. I dette tilfælde er Animal
superklassen. Et sådant tilfælde, hvor der er flere niveauer af arv, kaldes flerniveauarv.
I nogle sprog tillader det, at en klasse kan arve fra flere basisklasser; sådan en arv kaldes multipel arv. I C# kan en klasse kun have én overordnet klasse, så multipel arv er ikke mulig i C#.
1. I C#, hvilket nøgleord eller symbol bruges til at erklære en afledt klasse?
2. I fler-niveau arv, hvad kaldes klassen øverst?
3. Er fler-niveau arv muligt i C#?
Tak for dine kommentarer!