簡體   English   中英

C#定義子類時:基類是如何工作的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM