java 内部类的实例化_java 内部类实例化的一些疑惑

java 内部类实例化的一些疑惑

关注:225  答案:2  mip版

解决时间 2021-01-14 22:35

e6cb1a03ad541b3098697807b7bf1798.png

提问者笑低了眉眼

2021-01-13 23:57

请看代码 这是一个用内部类写链表:

class Linklist

{

public class Node

{

private String data;

private Node next;

public Node(String d){data=d;}

public void add(Node newNode)

{if(this.next==null)

{this.next=newNode;}

else

{this.next.add(newNode);}

}

public void printNode()

{System.out.print(this.data+"\t");

if(this.next!=null)

{this.next.printNode();}

}

};

private Node root;

public void addNode(String str)

{

Node n=new Node(str);

if(root==null)

{root=n;}

else

{

root.add(n);

}

}

public void printLink()

{

if(this.root!=null)

{

this.root.printNode();

}

}

};

public class LinklistDemo1

{

public static void main(String args[])

{Linklist L=new Linklist();

L.addNode("1");

L.addNode("2");

L.addNode("3");

L.addNode("4");

L.addNode("5");

L.addNode("6");

L.printLink();

}

}

这段代码没有问题 可以增加并打印出链表。我的疑惑是,在main()中Linklist L=new Linklist();实例化的时候,外部类的数据成员private Node root 会被实例化,但是这里我并没有写内部类Node的不带参数(我只写了带一个参数的)的构造函数,那么这里可以不报错?

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家橙池未蓝

2021-01-14 01:19

你好:

1. 首先 private Node root 当你没有显示初始化的时候它的值是Null.

2. 他不报空指针异常的原因是在public void addNode(String str) 这个方法中,你有一个判断

if(root==null)

{root=n;}

这样的话会给它赋一个初始值,它不在是null了,所以程序可以不报错的执行

希望可以帮到你

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼月洸芐啲溫拵

2021-01-14 01:35

必须要有这个方法,因为内部类是不允许其他类直接访问的,必须要有一个包装类的引用来指向这个内部类,此例中car就是包装类,对于car.super()就是为了确保有一个car的对象实例指向wheel.此处不能调用wheel的构造方法,这是java的硬性规定

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值