Erben von mehreren Klassen in C#
Eine Klasse oder ein Objekt kann Merkmale und Eigenschaften von einem oder mehreren übergeordneten Objekten oder Klassen in der OOP-Sprache erben. Wenn eine Unterklasse Zugriff auf einige oder alle Eigenschaften einer Elternklasse benötigt, wird Vererbung verwendet.
Es ist auch praktisch, wenn die Klasse eines Kindes viele Konstruktoren der Basisklasse zusammenführen muss. In diesem Tutorial behandeln wir die Implementierung mehrerer Vererbungen in C#.
Implementieren Sie Mehrfachvererbung in C#
In der C#-Sprache ist die bekannteste und unkomplizierteste Technik die Verwendung von Schnittstellen. Hier haben wir ein Beispiel, in dem wir die Vererbung von mehreren Klassen implementieren, um den BMI zu berechnen.
Das lernen wir Schritt für Schritt. Zuerst müssen wir die Bibliothek System
importieren, um auf die in C# verwendeten Methoden zugreifen zu können.
using System;
Wir erstellen eine Klasse namens Attributes
mit den Setter-Methoden, die wir verwenden werden, um Werte aus den anderen Klassen abzurufen. Deklarieren Sie darin zwei Double-Type-Variablen namens weight
und height
.
Wir halten sie geschützt
, das heisst, sie stehen niemandem ausserhalb unserer Klasse zur Verfügung. Erstellen Sie als Nächstes eine Methode setWeight()
mit einem doppelten Argument w
, das den bereitgestellten Wert weight
zuweist, und erstellen Sie die Methode setHeight()
, die den Wert von height
in derselben festlegt Weg wie dieser.
class Attributes {
protected double weight;
protected double height;
public void setWeight(double w) {
weight = w;
}
public void setHeight(double h) {
height = h;
}
}
Erstellen Sie dann eine Schnittstelle RetrieveAge
, die eine Double-Type-Methode retrieveAge
enthält, die ein Argument age
vom Double-Datentyp akzeptiert.
public interface RetrieveAge {
double retrieveAge(double age);
}
Erstellen Sie eine BMI
-Klasse, die zwei Klassen erbt, Attributes
und RetrieveAge
. Wir erstellen 4 Methoden zum Abrufen von Werten aus ihren übergeordneten Klassen innerhalb dieser Klasse.
Die erste Methode ist ein doppelter Datentyp namens retrieveBMI()
, der Gewicht und Grösse aus der übergeordneten Klasse Attributes
erhält, Gewicht durch das Quadrat der Grösse dividiert und das Ergebnis zurückgibt. Die nächsten beiden Methoden, retrieveHeight()
und retrieveWeight()
, holen die Werte für Größe und Gewicht und geben sie zurück.
Die letzte Methode, retrieveAge()
, erweitert die Methode von RetrieveAge
, die ein Argument age
vom Double-Typ nimmt und zurückgibt.
class BMI : Attributes, RetrieveAge {
public double retrieveBMI() {
return (weight / (height * height));
}
public double retrieveHeight() {
return height;
}
public double retrieveWeight() {
return weight;
}
public double retrieveAge(double age) {
return age;
}
}
Wir erstellen unsere letzte Klasse, die die Funktion Main()
haben wird. Erstellen Sie innerhalb der Hauptfunktion eine Klasseninstanz BMI
.
Verwenden Sie die Methoden setHeight()
und setWeight()
, um Größe und Gewicht zuzuweisen. Schließlich müssen wir Größe, Gewicht, berechneten BMI und Alter ausgeben.
Vollständiger Code:
using System;
class Attributes {
protected double weight;
protected double height;
public void setWeight(double w) {
weight = w;
}
public void setHeight(double h) {
height = h;
}
}
public interface RetrieveAge {
double retrieveAge(double age);
}
class BMI : Attributes, RetrieveAge {
public double retrieveBMI() {
return (weight / (height * height));
}
public double retrieveHeight() {
return height;
}
public double retrieveWeight() {
return weight;
}
public double retrieveAge(double age) {
return age;
}
}
class TotalBMI {
static void Main() {
BMI bmi = new BMI();
bmi.setWeight(80);
bmi.setHeight(2.07);
Console.WriteLine("Your Height: {0} m", bmi.retrieveHeight());
Console.WriteLine("Your Weight: {0} kg", bmi.retrieveWeight());
Console.WriteLine("BMI: {0}", bmi.retrieveBMI());
Console.WriteLine("Age: {0}", bmi.retrieveAge(40));
}
}
Ausgabe:
Your Height: 2.07 m
Your Weight: 80 kg
BMI: 18.6702140073281
Age: 40
I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.
LinkedIn