请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Java LinkedList

老师,不好意思,我想问个关于Java LinkedList的问题。

在第四章第四节,我们override过toString这个方法。
for(Node cur = dummyHead.next; cur != null; cur = cur.next)
res.append(cur + “->”);

我的问题是,为什么我们不需要额外的get method就能获得Node的 e 的结果?按理说cur是一个Node,我找了一圈没找到答案,所以得麻烦您解答一下。

可能问题有点蠢,请见谅!

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2019-03-05 10:03:00

我不确定我是不是正确的理解了你的问题。


因为在我们定义的Node类型,e是public的,可以直接通过"点变量名"的方式获得。(next也是)

private class Node{    
    public E e;    
    public Node next;    

    public Node(E e, Node next){    
        this.e = e;    
        this.next = next;    
    }    

    public Node(E e){    
        this(e, null);    
    }    

    public Node(){    
        this(null, null);    
    }    

    @Override    
    public String toString(){    
        return e.toString();    
    }    
}


比如,以下Student类中,name可以直接拿,不需要特殊的get方法,因为是public的。

public class Student{
    public string name;
    // ... 省略构造函数
}


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 Pro养成记 #1
    对,这就是我的问题。但我们的toString的override直接用的Node,而不是node.e,请问这是为什么?
    BTW,您的课实在讲得太好了,我在Udemy和Coursera上买过很多课,但没有一个人能像您这样理论和实例结合的这么好!
    回复 有任何疑惑可以回复我~ 2019-03-05 10:29:06
  • liuyubobobo 回复 提问者 Pro养成记 #2
    一个类一旦Override了toString方法,这个类的对象就可以被当做字符串使用。当它被当做字符串使用的时候,就会直接去掉toString方法。这是Java的特性:)也可以参考这里:http://coding.imooc.com/learn/questiondetail/79357.html 继续加油!:)
    回复 有任何疑惑可以回复我~ 2019-03-05 11:59:19
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信