我正在从Udemy, complete java masterclass学习Java。对于挑战"抽象类挑战"叙述者说我应该在抽象类中创建2个引用和1个值。
在解决方案中,这是结果:
public abstract class ListItem {
// references
protected ListItem rightLink = null;
protected ListItem leftLink = null;
// value
protected Object object;
}
什么使引用成为引用而不是值?
它们都以protected开头,然后我们有类型,然后我们有变量名。唯一的区别是引用已赋值null。
但如果要举例如:
private int myNumber = 10;
上面不称为引用,它被称为类型为int的变量myNumber,值为10.
答案 0 :(得分:12)
它不是 Java语言上下文中的值。 在Java语言的上下文中,所有三个字段都是引用。
我将其视为链接列表上下文中的值。
在链表的上下文中,类型为Object
的对象将是存储在列表中的实际值。 ListItem
是对另一个列表项的引用,因为这是链接列表的连接方式。
似乎课程材料没有尽可能清晰。
答案 1 :(得分:3)
Word" value"和"参考"在编程语言的上下文中具有非常特殊的含义,包括Java。
但是,这种区别在这里不适用,因为链接和对象都是使用引用实现的。作者正在以更抽象的方式使用这些词来实现数据结构。
通常,数据结构具有存储用于"有效载荷"数据,以及可选的支持数据结构本身内部工作所需的数据:
等等。当作者说"价值"它们是指用于存储"有效载荷的变量"数据;当他们说"参考"它们表示存储辅助信息的变量,可以实现数据结构的内部工作。在这种情况下,看起来他们希望您构建doubly linked list。
答案 2 :(得分:2)
我认为本教程将向您展示如何创建LinkedList。所以ListItem必须保留对下一个和上一个Item的引用,所以你的引用是:
protected ListItem rightLink = null;
protected ListItem leftLink = null;
另外,每个Item都可以保留一些值,所以你的值是:
protected Object object;
它可以是任何其他类变量,但教程创建者需要Object。
答案 3 :(得分:-1)