2017-05-15 5 views
-2

このステートメントの適切なリアルタイムの例は何ですか?タイプがインタフェースであると定義された変数の代入

タイプがインタフェースである参照変数を定義する場合、そのオブジェクトに割り当てるオブジェクトは、そのインタフェースを実装するクラスのインスタンスでなければなりません。ここで

+2

'List list = new ArrayList <>()'?実際のJavaプログラムには、コードの10行ごとにそのような例があります。 –

+1

@JBNizetジェネリックが集中しているようだが、正しいと思うが、 –

+1

"リアルタイム"の例の意味は?それとも、「実生活」を意味しますか?それでは「現実の生活」はどういう意味ですか? –

答えて

1

interfaceは、と定義しています()。契約は一連のルールを定義します。 interfaceは、メソッドを宣言することによってルールを定義します(シグネチャ:入力パラメータ、戻り値の型、名前、場合によっては実装のためにjava docsで記述されたいくつかの制約)。

interfaceの型の宣言された参照変数は、その特定のインタフェースで定義されている契約で設定されたルールに従うクラスのオブジェクトのみを参照できます。

参照変数によって、オブジェクトのメソッドを呼び出すことができます。インタフェースがその宣言に何らかのメソッドを設定し、そのインタフェースの型の変数を持っているとします。これらの設定メソッドは、その変数によって呼び出される必要があります。これを行うには、その特定のインタフェースを実装するクラスのオブジェクトのみを参照することが必須です。

インタフェースを実装することによって、具体的なクラス(非抽象)がバインドされて、契約(インタフェース)によって設定されたルール(メソッド)の実装が提供されます。

List x = new ArrayList();// valid 
List y = new LinkedList();// valid 
List z = new StringBuffer(); // invalid as StringBuffer does not implements List interface. 
+0

あなたは 'interface'を意味しましたか? –

+0

はい...私はそれを間違えました –

+0

あなたは 'Interface'としてそれを持っていました。大文字の "I"はコンパイラの失敗を引き起こします。 –

0
public class StackOverflowQuestion { 

    private final List<Answer> answers = new ArrayList<>(); 

    public void addAnswer(Answer answer) { 
     answers.add(answer); 
    } 
} 

クラスArrayList<T>は、インタフェースList<T>を実装しています。

関連する問題