在以下示例中,我使用的是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'关键字来解决你的编译器错误。 –