-2

List は Java のインターフェースです。そして、それにはいくつかの方法があります。通常、インターフェイスはメソッド プロトタイプの仕様です。つまり、インターフェースはメソッドシグネチャのみで構成され、インターフェース内のそのメソッドの実装はありません。

インターフェイス内に実装がない場合、 List インターフェイスのメソッドがどのように機能するのか疑問があります。

name プロパティ、setter、getter メソッドを持つクラス Book があるとします。そして、このような別のクラス getBooks があります。

public class GetBooks{
    List<Book> list;
    public List<Book> getBooks(){
    return list;
    }
    //setter method..
}

他のクラスを介して、実行時に set メソッドに書籍を送信しています。

このような別のクラス UseBooks があります。

public class UseBooks{
    .....
    ....
    List<Book> list = new GetBooks().getBooks();
    list.add(new Book("aaa"));
}

私の質問は、 getBooks() が Arraylist または他の実装クラスではなく List インターフェイスを返すため、インターフェイス List にある場合でも add メソッドが本を追加する方法です。

4

4 に答える 4

3

ここに画像の説明を入力

Java provides 3 concrete classes which implement the list interface
Vector
ArrayList
LinkedList
于 2013-01-10T06:43:06.020 に答える
1

「インターフェース内に実装がない場合、リストインターフェースのメソッドがどのように機能するか疑問があります」-(!!!!!!) このインターフェースが実装されているクラスインスタンスの実装を使用します。そのため、異なるクラス インスタンスでの実装に依存します。

このための詳細な例を期待していますか?

于 2013-01-10T06:44:02.753 に答える
1

java.util.ArrayListjava.util.LinkedList、は、インターフェイスjava.util.Vectorの具体的な実装クラスです。Listこのクラスには、すべてのメソッドの実装が含まれています。次のように使用できます-

List<String> list = new ArrayList<String>();
于 2013-01-10T06:32:41.383 に答える
1

使用する型の唯一のオブジェクトは、などListを実際に実装する型になります。それらは実装を提供します。ListArrayListLinkedList

スーパークラスまたはインターフェースからの未実装の抽象メソッドを持つクラスをインスタンス化することはできません。

于 2013-01-10T06:33:30.043 に答える