HOWTO · Csharp
在 C# 中從多個類繼承
在本文中,我們將在實現的幫助下學習如何藉助 C# 中的介面從多個類中繼承。
本頁內容
一個類或物件可以從 OOP 語言中的一個或多個父物件或類繼承特徵和特性。當子類需要訪問任何或所有父類的屬性時,就會使用繼承。
當一個子類需要合併許多基類構造體時,它也很方便。在本教程中,我們將討論如何在 C# 中實現多重繼承。
在 C# 中實現多重繼承
在 C# 語言中,最著名和最直接的技術是使用介面。這裡我們有一個例子,我們將在其中實現從多個類的繼承來計算 BMI。
我們將逐步學習這一點。首先,我們需要匯入 System 庫來訪問 C# 中使用的方法。
using System;
我們將使用 setter 方法建立一個名為 Attributes 的類,我們將使用它從其他類中檢索值。在其中宣告兩個雙精度型變數,名為 weight 和 height。
我們將保持它們 protected,這意味著我們類以外的任何人都無法使用它們。接下來,建立一個帶有雙型別引數 w 的方法 setWeight(),將提供的值分配給 weight,並建立 setHeight() 方法,將 height 的值設定為相同就像這個一樣。
class Attributes {
protected double weight;
protected double height;
public void setWeight(double w) {
weight = w;
}
public void setHeight(double h) {
height = h;
}
}
然後,建立一個介面 RetrieveAge,其中包含一個雙型別方法 retrieveAge,該方法採用雙資料型別的引數 age。
public interface RetrieveAge {
double retrieveAge(double age);
}
建立一個將繼承兩個類 Attributes 和 RetrieveAge 的 BMI 類。我們將建立 4 個方法來從此類中的父類中檢索值。
第一個方法是一個名為 retrieveBMI() 的雙精度資料型別,它從父類 Attributes 獲取體重和身高,然後將體重除以身高的平方,然後返回結果。接下來的兩個方法 retrieveHeight() 和 retrieveWeight() 將獲取身高和體重值並返回它們。
最後一個方法 retrieveAge() 擴充套件了 RetrieveAge 的方法,該方法接受一個雙精度型別的引數 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;
}
}
我們建立最終類,該類將具有 Main() 函式。在 main 函式中,建立一個 BMI 類例項。
使用 setHeight() 和 setWeight() 方法來分配身高和體重。最後,我們需要輸出身高、體重、計算出的 BMI 和年齡。
完整程式碼:
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));
}
}
輸出:
Your Height: 2.07 m
Your Weight: 80 kg
BMI: 18.6702140073281
Age: 40