C#定义子类时基类如何工作?

时间:2017-04-06 04:36:15

标签: c# parameters 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);
    }

但我不知道如何添加在我的基类

中设置的参数

1 个答案:

答案 0 :(得分:3)

Student构造函数需要获取将传递给Person基础构造函数的参数。

class Student : Person
{
    private int StudentId;

    public Student(string name, int age, int studentId)
        : base(name, age)
    {
        StudentId = studentId;
    }
}