我得到一個錯誤:「類型的書」不包含一個構造函數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