Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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 LinkedList的接口编程_Java_Interface - Fatal编程技术网

Java LinkedList的接口编程

Java LinkedList的接口编程,java,interface,Java,Interface,最近有人向我提出了这个问题(),我想得到一些澄清 LinkedList<Integer> test1 = new LinkedList<Integer>(); List<Integer> test2 = new LinkedList<Integer>(); LinkedList test1=新建LinkedList(); List test2=新建LinkedList(); 根据我所读的内容,第一个LinkedList/列表决定了可以使用哪

最近有人向我提出了这个问题(),我想得到一些澄清

LinkedList<Integer> test1 = new LinkedList<Integer>(); 
List<Integer> test2 = new LinkedList<Integer>(); 
LinkedList test1=新建LinkedList();
List test2=新建LinkedList();
根据我所读的内容,第一个LinkedList/列表决定了可以使用哪些方法。因此,对于test1,您可以执行test1.peek(),而对于test2则不能。这是因为,对于test2,您正在创建LinkedList,但要实现List接口的方法吗?换句话说,对于test2,您已经创建了一个带有prev&next节点的LinkedList,但是您选择实现列表界面中列出的方法吗


我想我有点困惑,因为我认为LinkedList是一个实现List接口的类,但是对于test2,我们正在创建LinkedList并再次实现List?

LinkedList实现List; 列表未实现LinkedList

peek
是链接列表的一种方法, 但不是
列表
的方法

由于这种情况,
test2.peek()
是一个编译时错误

具体来说,,
test2只公开列表的功能。

LinkedList实现列表; 列表未实现LinkedList

peek
是链接列表的一种方法, 但不是
列表
的方法

由于这种情况,
test2.peek()
是一个编译时错误

具体来说,, test2只公开列表的功能

根据我所读到的,第一个LinkedList/列表决定了哪些方法 可以使用

是的,“first LinkedList/List”是您要声明的引用的类型。您可以调用引用类型在该引用上公开的方法,包括继承的方法,而不调用其他方法

因此,对于test1,您可以执行test1.peek(),而对于 测试2

这是因为,对于test2,您正在创建一个LinkedList吗 但是要实现列表接口的方法吗

不,你没有在那里实施任何东西。您正在初始化引用
test1
test2
以引用类
LinkedList
的对象,该类是
实现
的具体类,因此提供了
列表
接口定义的所有方法的具体实现
LinkedList
还提供了由其他接口和超类定义的一些方法的实现,原则上,它可以定义和实现它所特有的一些方法

在 换句话说,对于test2,您已经创建了一个带有prev&next的LinkedList 节点,但正在选择实现列表中列出的方法 接口

同样,这里没有实现任何方法。通过选择通过类型为
List
的引用访问
LinkedList
对象,可以确保只有那些由
List
定义的
LinkedList
方法可以通过该引用调用。这不会改变对象本身的性质。至少有时会有其他引用,其中一些类型为
LinkedList
。这些可用于调用对象上的
LinkedList
而不是
List
公开的方法

我想我有点困惑,因为我认为LinkedList是一个 实现列表接口

但是对于test2,我们正在创建一个 LinkedList并再次实现列表

每个
链接列表
都是一个
列表
。这是前一个类
实现后一个接口的主要结果之一。通过通过类型为
列表
的引用访问类为
链接列表
的对象,您将自己限制为仅使用由
列表
定义的对象部分,但您没有以任何方式更改对象本身。它仍然是一个
链接列表

以人的角色为例。我是一个儿子,一个兄弟,一个父亲,一个雇员,一个朋友,还有很多其他的东西,但我生活中的大多数人与我的互动只是根据其中的一个或两个角色。例如,我的老板经常让我,她的员工,为她做各种各样的工作,但她从来不会让我像她父亲一样每周给她零用钱

类型,特别是接口类型,可以被视为类似于这些角色。如果你需要一名员工,不一定非得是和我一模一样的人——可以是任何能胜任“员工”角色的人。在这个角色上工作并不意味着任何人都没有其他的角色

根据我所读到的,第一个LinkedList/列表决定了哪些方法 可以使用

是的,“first LinkedList/List”是您要声明的引用的类型。您可以调用引用类型在该引用上公开的方法,包括继承的方法,而不调用其他方法

因此,对于test1,您可以执行test1.peek(),而对于 测试2

这是因为,对于test2,您正在创建一个LinkedList吗 但是要实现列表接口的方法吗

不,你没有在那里实施任何东西。您正在初始化引用
test1
test2
以引用类
LinkedList
的对象,该类是
实现
的具体类,因此提供了
列表
接口定义的所有方法的具体实现
LinkedList
还提供了由其他接口和超类定义的一些方法的实现,原则上,它可以定义和实现它所特有的一些方法

在 换句话说,对于test2,您已经创建了一个带有prev&next的LinkedList 节点,但正在选择实现列表中列出的方法 接口

同样,这里没有实现任何方法。通过选择通过类型为
List
的引用访问
LinkedList
对象,
LinkedList<Integer> test1 = new LinkedList<Integer>(); 
List<Integer> test2 = new LinkedList<Integer>();