public class interview {
public static void main(String[] args) {
new HelloB();
}
}
class HelloA{
public HelloA(){
System.out.println("HelloA");
}
{
System.out.println("A");
}
static {
System.out.println("static A");
}
}
class HelloB extends HelloA{
public HelloB(){
System.out.println("HelloB");
}
{
System.out.println("B");
}
static {
System.out.println("static B");
}
}
答案为:
static A
static B
A
HelloA
B
HelloB
public class interview {
static int x,y,z;
static {
int x = 5;
x--;
}
static {
x--;
}
public static void method(){
y = z++ + ++z;
}
public static void main(String[] args) {
System.out.println("x=" + x);
z--;
method();
System.out.println("result:" + (z + y + ++z));
}
}
答案为:
x=-1
result:3
解析:第一个静态代码块中是对局部变量x进行更改,第一个静态代码块中是对属性x进行更改
public class interview {
public static void main(String[] args) {
Sub s = new Sub();
}
}
class Base{
Base(){
method(100);
}
{
System.out.println("base");
}
public void method(int i){
System.out.println("base:" + i);
}
}
class Sub extends Base{
Sub(){
super.method(70);
}
{
System.out.println("sub");
}
public void method(int j){
System.out.println("sub:" + j);
}
}
答案为:
base
sub:100
sub
base:70
解析:由于在Sub类中重写了method()方法,所以method(100)是调用的重写后的method()方法