[英]C# how does the :base class work when defining the subclass?
所以我只想試着理解這個概念:
場景1
我有一個名為Person的基類,它有一個沒有參數的constrcutor(即默認構造函數)
這個類有2個受保護的屬性,我可以更改(它們是公共的)
現在我想創建一個具有一個額外參數的子類(稱之為student),因此我可以創建一個帶有3個參數的構造函數(基類中的1 + 2)
如果我創建子類的對象,我可以傳入3個參數 - 這沒問題(這可能是錯誤的方法,但它的工作原理)
情景2
我有一個名為Person的基類,現在我有一個帶有2個參數的構造函數,我沒有沒有參數的默認構造函數。
當我現在創建子類(student)時,為其構造函數創建另一個參數。
這個構造函數只有一個參數,我不能像在場景1中那樣從基類中添加第二個和第三個參數
但是我可以使用:base()
來鏈接基類,但我需要傳入值而不是參數。
題
在創建學生對象時,如何在:base
類中放入自定義值。 因為我在子類構造函數中鏈接它時傳遞值。
基類
class Person
{
protected string Name;
protected int Age;
//public Person1(){}
public Person(string _name, int _age)
{
Name = _name;
Age = _age;
}
public void SayHello()
{
Console.WriteLine("Helllo World!");
Console.WriteLine($"My name is {Name} and I am {Age} years old");
}
}
子類
class Student : Person1
{
private int StudentId;
//I was hoping to put in new parameters in the base ()
public Student(int _studentId) : base ("", 00)
{
//_name and _age do not exist
//Name = _name;
//Age = _age;
StudentId = _studentId;
}
}
Program.cs中
static void Main(string[] args)
{
var p1 = new Person1("John", 45);
p1.SayHello();
var student1 = new Student(123456);
}
但我不知道如何添加在我的基類中設置的參數
Student
構造函數需要獲取將傳遞給Person
基礎構造函數的參數。
class Student : Person
{
private int StudentId;
public Student(string name, int age, int studentId)
: base(name, age)
{
StudentId = studentId;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.