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,是的,我更正了,将文本标记为代码时的有效点,那么它应该符合有效语法。