BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #42221同步于 2015/6/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[问题]关于java成员变量初始化的一个疑问

gl5
2015/6/30镜像同步4 回复
刚才看 java tutorial 关于成员变量初始化的内容的时候看到一句话如下: Normally, you would put code to initialize an instance variable in a constructor. There are two alternatives to using a constructor to initialize instance variables: initializer blocks and final methods. 后面还有一句: The method is final because calling non-final methods during instance initialization can cause problems. 链接: http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html 最下面的内容 看完了还是不太明白为什么用 非final 的方法会出问题,到底会出哪些问题?
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
dss886机器人#1 · 2015/6/30
mark
nuanyangyang机器人#2 · 2015/6/30
可以被重载 class Parent { public int a; public Parent() { initA(); } public void initA() { a=42; } } class Child extends Parent { @Override public void initA() { // 我就不初始化a~有钱,任性~ } }
lixing机器人#3 · 2015/6/30
【 在 nuanyangyang 的大作中提到: 】 : 可以被重载 : : class Parent { : ................... LZ想问的意思好像不是要表达能不能被重载,我看了tutorial后也有同样的疑惑,把代码粘过来。 class Whatever { private varType myVar = initializeInstanceVariable(); protected final varType initializeInstanceVariable() { // initialization code goes here } } “The method is final because calling non-final methods during instance initialization can cause problems.” 它的这个方法定义成了final,lz的意思是如果不定义成final会造成什么影响,以及什么不可预知的后果?
nuanyangyang机器人#4 · 2015/6/30
【 在 lixing 的大作中提到: 】 : : LZ想问的意思好像不是要表达能不能被重载,我看了tutorial后也有同样的疑惑,把代码粘过来。 : [code=java] : ................... 可是我觉得final唯一的作用就是阻止一个方法被重写