静态代码块无法实例化对象?
其余的都是getter和setter函数,没有自定义构造函数,由于static代码块优先执行,所以我把构造代码块中的name注释了,不希望名字是"花花"而是"明明"。
可是输出结果名字为什么是null???还是说静态代码块虽然可以通过实例化对象然后用对象调用非静态成员,但是依然不可以给非静态成员赋值或不能被访问?我也试过用one.setName("明明")但还是null?
50
收起
正在回答
2回答
你好!你在非静态代码块这里又重新定义了一个对象one,和静态代码块中的对象是无关的。因为新定义的one没有个名字赋值,所以输出结果为null。祝学习愉快!
爱宝宝真的太好了
2017-08-28 14:10:05
1 2 3 4 5 6 7 8 9 | public class Test { Test one; private int temp; static { one = new Test(); //这里报错cannot make a static reference to a non-static field one one.temp = 11111 ; //这里报错cannot make a static reference to a non-static field one } } |
老师问一下为什么这里会报错呀, 是不是需要在类成员里的Test one 前面加上static?
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧