为类型为接口定义的变量的赋值

时间:2017-05-15 05:55:23

标签: java interface

此声明的任何合适的实时示例......?

如果定义类型为接口的引用变量,则分配给它的任何对象都必须是实现接口的类的实例。

2 个答案:

答案 0 :(得分:1)

interface定义合同。合同定义了一组规则。 interface通过声明方法来定义规则(它们的签名:输入参数,返回类型,名称,有时也可能是用于实现的java文档中编写的一些约束)。

声明某些interface类型的引用变量只能引用类的对象,这些对象遵循由该特定接口定义的合同中设置的规则。

通过引用变量,我们可以调用对象上的方法。假设接口在其声明中设置了一些方法,然后我们有一个该接口类型的变量。现在应该能够通过该变量调用这些set方法。为此,必须仅引用实现该特定接口的类的对象。

通过实现接口,一个具体的类(非抽象)必然会提供由契约(接口)设置的规则(方法)的实现。

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

答案 1 :(得分:0)

public class StackOverflowQuestion {

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

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

此处,类ArrayList<T>实现了接口List<T>