Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 定义的类型为接口的变量的赋值_Java_Interface - Fatal编程技术网

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

Java 定义的类型为接口的变量的赋值,java,interface,Java,Interface,这句话有没有合适的实时示例 如果定义类型为接口的引用变量,则分配给它的任何对象都必须是实现该接口的类的实例。公共类StackOverflowQuestion{ public class StackOverflowQuestion { private final List<Answer> answers = new ArrayList<>(); public void addAnswer(Answer answer) { answers.

这句话有没有合适的实时示例

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

公共类StackOverflowQuestion{
public class StackOverflowQuestion {

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

    public void addAnswer(Answer answer) {
        answers.add(answer);
    }
}
List x = new ArrayList();// valid
List y = new LinkedList();// valid 
List z = new StringBuffer(); // invalid as StringBuffer does not implements List interface. 
私有最终列表答案=新建ArrayList(); 公共无效添加应答(应答){ 答案。添加(答案); } }

在这里,类
ArrayList
实现了接口
列表

接口
定义了一个契约。合同定义了一套规则<代码>接口
通过声明方法来定义规则(它们的签名:输入参数、返回类型、名称,有时还可能是java文档中为实现编写的一些约束)

声明为某个
接口类型的引用变量
只能引用该类的对象,该类依附于该特定接口定义的合同中的规则集

public class StackOverflowQuestion {

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

    public void addAnswer(Answer answer) {
        answers.add(answer);
    }
}
List x = new ArrayList();// valid
List y = new LinkedList();// valid 
List z = new StringBuffer(); // invalid as StringBuffer does not implements List interface. 
通过引用变量,我们可以调用对象上的方法。假设接口在其声明中设置了某个方法,然后我们有一个该接口类型的变量。现在,这些set方法应该能够被该变量调用。为此,必须只引用实现该特定接口的类的对象

通过实现一个接口,一个具体类(非抽象类)必须提供合同(接口)设置的规则(方法)的实现


List List=new ArrayList()
?任何真正的Java程序每10行左右的代码就有一个这样的示例。@JBNizet这是正确的,尽管我认为泛型似乎分散了注意力,“实时”示例的含义是什么?还是说“现实生活”?“真实生活”是什么意思?@AdrianShum“真实生活”只发生在真实生活中。。。!!你不这么认为吗?“实时”是计算机工程中的一个艺术术语,意思是交互的响应时间是有限的。“现实生活”与任何事情都无关。它不仅仅是一个具有“某些活动”的“正在运行的应用程序”。“实时”是一个很容易查找的术语和概念。您的意思是
接口
?您的意思是
接口
。大写的“I”会导致编译器失败。@Lew Bloch,我指的是接口这个名词,用于解释基本概念,就像我们使用类一样。虽然没有这样的关键字,但我们应该使用多个
类。但它仍然有效,因此我将
I
替换为
I
。确保当您将文本标记为关键字时,您的意思是这样做的。@Lew Bloch,是的,我更正了,将文本标记为代码时的有效点,那么它应该符合有效语法。