我得到一个错误:“类型的书”不包含一个构造函数0' 参数”当我尝试设置我的构造函数如下:c#:继承和抽象类 - 基础。 VS:基地(在构造函数初始化)
using System;
using System.Collections.Generic;
using System.IO;
abstract class Book
{
protected String title;
protected String author;
public Book(String t,String a){
title=t;
author=a;
}
public abstract void display();
}
class MyBook : Book
{
private int price = 0;
public MyBook(string t, string a, int p)
{
base.title = t;
base.author = a;
this.price = p;
}
public override void display()
{
Console.WriteLine($"Title: {title}");
Console.WriteLine($"Author: {author}");
Console.WriteLine($"Price: {price}");
}
}
我已经将问题缩小到了我使用基本关键字的方式。我应该在其构造函数声明中使用基础构造函数初始值设定项和base关键字。
public MyBook(string t, string a, int p)
: base(t, a)
{
this.price = p;
}
请问有人请向我解释为什么我不能使用base。在我的构造函数中?是否因为标题和作者变量都是抽象类的受保护成员?我认为,因为我是从Book派生的,所以我可以访问这些受保护的成员。还是因为我没有实例化我的子类,因此我不能这样设置我的构造函数?
因为你已经定义了一个基础的构造函数,预计2个参数,才可以初始化和为您服务它的成员。 – vendettamit