在以下示例中,我使用的是C#。如何在派生自抽象類的類中創建新方法?
我創建了一個抽象類Base_Collection
,然後我從中派生出其他類(Book
,Movie
,Game
)。但是,我不知道如何添加新的方法,可以用於這些新的子類而不會出現編譯器錯誤。
namespace polymorphism_test_01
{
abstract class Base_Collection
{
public int id = 0;
public string title = "";
public Base_Collection() { }
}
}
namespace polymorphism_test_01
{
class Book : Base_Collection
{
public Book() { }
public override void Read_Book() { }
}
}
namespace polymorphism_test_01
{
class Game : Base_Collection
{
public Game() { }
public void Play_Game() { }
}
}
namespace polymorphism_test_01
{
class Movie : Base_Collection
{
public Movie() { }
public void Watch_Movie() { }
}
}
調用book.Read_Book()
下面的代碼片段無法正常工作時,編譯器將輸出一個錯誤:
namespace polymorphism_test_01
{
class Program
{
public static void Main(string[] args)
{
Base_Collection book = new Book();
book.title = "The Dark Tower";
book.Read_Book();
Console.WriteLine(book.title);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
您得到編譯器錯誤的原因是因爲您正在創建一個'Book'對象並將其轉換爲其基本類型。當你嘗試調用'Read_Book()'時,這將不起作用,因爲'Base_Collection'類型沒有定義'Read_Book()'。 'Read_Book()'只在'Book'類型中定義。你將通過創建你的書爲Book Book = new Book();並從你的Read_Book()方法定義中刪除'override'關鍵字來解決你的編譯器錯誤。 –