【发布时间】:2013-06-05 10:39:50
【问题描述】:
我有两个类,Parent 和 Child,代码如下:
public class Parent {
public String word;
}
父类只包含一个公共字段。
public class Child extends Parent {
//super.word = "Simple field assignment.";
{
System.out.println(word);
}
String word2 = super.word = "Field assignment.";
{
System.out.println(word);
super.word = "Initialization block.";
System.out.println(word);
}
public Child(){
super.word="Constructor.";
System.out.println(word);
}
}
我想问的问题是为什么不允许简单的赋值'super.word = "word"',但是下面的双重赋值是可以的。有人能具体说明后者到底发生了什么吗?
还有为什么初始化块内允许赋值?
如果我运行以下主程序:
public class FieldTest {
public static void main (String[] args)
{
Child c = new Child();
System.out.println("1: "+c.word);
System.out.println("2: "+c.word2);
}
}
结果是:
null
Field assignment.
Initialization block.
Constructor.
1: Constructor.
2: Field assignment.
【问题讨论】:
-
删除
super。您只需要this.word或word。该字段是继承的。 -
删除
super或将其替换为this不会改变任何内容。 -
那是评论而不是答案。
标签: java inheritance initialization field