2

ポリモーフィズムについて質問があります。以下に 3 つの単純なクラスを示します。

public class Book
{
    public string Name;
}

public class Encyclopedia : Book
{
    public int Volume;
}

public class Library
{
    public Book[] Books;
}

Library クラスは、次のようにインスタンス化しました。

private void btnMakeLibrary_Click(object sender, EventArgs e)
{
    Book[] books = new Book[3];
    books[0] = new Book();
    books[0].Name = "Book Name 1";
    books[1] = new Book();
    books[1].Name = "Book Name 2";
    books[2] = new Encyclopedia();
    books[2].Name = "Encyclopedia 1";
    ((Encyclopedia)books[2]).Volume = 10;

    Library library = new Library();
    library.Books = books;
}

Book 型で構成される配列には、Encyclopedia 型が入力されます。なぜこれが可能なのですか?エンサイクロペディア型の配列がその基本クラスの 1 つによって取り込まれた場所が逆であったかどうかは理解できました。基本クラスと子クラスの間のキャストに関する以前の質問と混同している可能性があります。

4

2 に答える 2

1

子クラスには常に基本部分が含まれているため、基本クラスには常にその子への参照を含めることができます。これが、Book の派生クラスを、Book のコレクションである Library に割り当てることができる理由です。

百科事典は本です。このステートメントは常に当てはまります。これで混乱が解消されることを願っています。

于 2013-06-18T16:50:25.470 に答える