Java:创建对象时,为什么不';界面在右手边吗? java.util.Queue Queue=new java.util.LinkedList();
LinkedList实现了队列。Queue不应该在上述语句的右侧,LinkedList不应该在左侧吗?在Java中,您可以为相同类型或更一般类型的变量赋值。在您的示例中,Java:创建对象时,为什么不';界面在右手边吗? java.util.Queue Queue=new java.util.LinkedList();,java,data-structures,queue,linked-list,Java,Data Structures,Queue,Linked List,LinkedList实现了队列。Queue不应该在上述语句的右侧,LinkedList不应该在左侧吗?在Java中,您可以为相同类型或更一般类型的变量赋值。在您的示例中,newlinkedlist()是一个值。由于LinkedList实现了Queue,因此它比Queue更具体。i、 e.链接列表是一个队列 例如,这三个都是有效的 java.util.Queue<TreeNode> queue = new java.util.LinkedList<TreeNode>();
newlinkedlist()
是一个值。由于LinkedList
实现了Queue
,因此它比Queue
更具体。i、 e.链接列表
是一个队列
例如,这三个都是有效的
java.util.Queue<TreeNode> queue = new java.util.LinkedList<TreeNode>();
objecto=newlinkedlist();
Queue Queue=new LinkedList();
LinkedList=新建LinkedList();
但是你不能写这些,因为它们是不正确的赋值
Object o = new LinkedList<TreeNode>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
LinkedList o=newobject();
LinkedList队列=新队列();
另外,该示例中的第二个也是无效的,因为队列是一个接口,并且您不能实例化(
new
)一个接口,因为它不是一个具体的类型。在Java中,您可以为同一类型或更一般的类型的变量赋值。在您的示例中,newlinkedlist()
是一个值。由于LinkedList
实现了Queue
,因此它比Queue
更具体。i、 e.链接列表
是一个队列
例如,这三个都是有效的
java.util.Queue<TreeNode> queue = new java.util.LinkedList<TreeNode>();
objecto=newlinkedlist();
Queue Queue=new LinkedList();
LinkedList=新建LinkedList();
但是你不能写这些,因为它们是不正确的赋值
Object o = new LinkedList<TreeNode>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
LinkedList o=newobject();
LinkedList队列=新队列();
另外,该示例中的第二个也是无效的,因为队列是一个接口,并且您不能实例化(
new
)接口,因为它不是一个具体类型。该示例声明Queue
是对具有Queue
类型的对象的引用,但是变量必须引用该接口的具体实现的实例,LinkedList
。到,您同意只使用队列
的方法。这允许您在需要时更改实现,而无需更改queue
的使用方式 该示例将队列
声明为对类型为队列
的对象的引用,但该变量必须引用该接口的具体实现的实例,链接列表
。到,您同意只使用队列
的方法。这允许您在需要时更改实现,而无需更改queue
的使用方式 否,队列
是一个接口LinkedList
是一个实现。为什么?您认为newqueue()
是什么意思?Queue
是一种允许将数据推送到一端并从另一端获取数据的数据结构。有很多方法可以实现显示这种行为的结构:LinkedList
就是其中之一。@trashgood我是Java初学者。我知道队列是一个接口,LinkedList已经实现了它。实现接口的类创建对象,对吗?所以,这就是为什么我认为LinkedList应该在另一边我可能会看到你的困惑。当我说“inti”时,你可能会想,“我要求将I实现为int;那么队列怎么可能在左边呢。不过,情况并非如此。左边是您需要的类型/行为。你赋予它的是具体的东西。因此,在您的情况下,“队列”需要看起来像一个队列;您正在为它分配(或初始化)具体类型LinkedList。不,Queue
是一个接口LinkedList
是一个实现。为什么?您认为newqueue()
是什么意思?Queue
是一种允许将数据推送到一端并从另一端获取数据的数据结构。有很多方法可以实现显示这种行为的结构:LinkedList
就是其中之一。@trashgood我是Java初学者。我知道队列是一个接口,LinkedList已经实现了它。实现接口的类创建对象,对吗?所以,这就是为什么我认为LinkedList应该在另一边我可能会看到你的困惑。当我说“inti”时,你可能会想,“我要求将I实现为int;那么队列怎么可能在左边呢。不过,情况并非如此。左边是您需要的类型/行为。你赋予它的是具体的东西。因此,在您的情况下,“队列”需要看起来像一个队列;您正在为它分配(或初始化)具体类型LinkedList。在您的第一行,您不是指更具体的类型,而不是更一般的类型吗?你可以将一个Dog对象(特定的)分配给一个动物变量(一般的),但不能反过来。在你的第一行,你不是指一个更具体的类型,而不是一个更一般的类型吗?可以将狗对象(特定)指定给动物变量(常规),但不能反过来。