今天突然记起一道面试题,题目是一段代码,然后求输出结果。为了求证,我开始自己动手,一开始我创建了一个Test.java文件,代码如下:
public
class
Test{
public
static
void
main(String args[]){
new
B();
}
}
public class
A {
public
A(){
System.
out
.println(
"I am A"
);
}
{System.out.println(
"A"
);}
static
{System.
out
.println(
"static A"
);}
}
public class
B
extends
A{
public
B(){
System.
out
.println(
"I am B"
);
}
{System.
out
.println(
"B"
);}
static
{System.
out
.println(
"static B"
);}
}
编译器提示错误,提示A类和B类应该定义在自己的文件之中。可是我明明记得是可以在一个文件之中写多个类,然后通过上网搜索,发现是可以在一个java文件中编写
多个类,不过只能有一个public所修饰的类,所以将A和B类前的public修饰符去掉即可,最终代码如下:
public
class
Test{
public
static
void
main(String args[]){
new
B();
}
}
class
A {
public
A(){
System.
out
.println(
"I am A"
);
}
{System. out.println(
"A"
);}
static
{System.
out
.println(
"static A"
);}
}
class
B
extends
A{
public
B(){
System.
out
.println(
"I am B"
);
}
{System.
out
.println(
"B"
);}
static
{System.
out
.println(
"static B"
);}
}
最终编译通过,顺便附上输出结果:
static A
static B
A
I am A
B
I am B
总结:其实这真的是一个非常小的问题,我只是想写下来加深印象。