返回信息流刚才看 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 的方法会出问题,到底会出哪些问题?
这是一条镜像帖。来源:北邮人论坛 / java / #42221同步于 2015/6/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]关于java成员变量初始化的一个疑问
gl5
2015/6/30镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
可以被重载
class Parent {
public int a;
public Parent() {
initA();
}
public void initA() {
a=42;
}
}
class Child extends Parent {
@Override
public void initA() {
// 我就不初始化a~有钱,任性~
}
}
【 在 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会造成什么影响,以及什么不可预知的后果?
【 在 lixing 的大作中提到: 】
:
: LZ想问的意思好像不是要表达能不能被重载,我看了tutorial后也有同样的疑惑,把代码粘过来。
: [code=java]
: ...................
可是我觉得final唯一的作用就是阻止一个方法被重写