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>();