面试题
以下代码执行结果
public class Test {
class Super{
int flag=1;
Super(){
test();
} void test(){
System.out.println("Super.test() flag="+flag);
}
}
class Sub extends Super{
Sub(int i){
flag=i;
System.out.println("Sub.Sub()flag="+flag);
} void test(){
System.out.println("Sub.test()flag="+flag);
}
}
public static void main(String[] args) { new Test().new Sub(5);
}
}
结果:
Sub.test()flag=1
Sub.Sub()flag=5
解析
1.继承中代码执行顺序
1.父类静态对象,父类静态代码块
2.子类静态对象,子类静态代码块
3.父类非静态对象,父类非静态代码块
4.父类构造函数
5.子类非静态对象,子类非静态代码块
6.子类构造函数
2.java多态的实现
- 继承:在多态中必须存在有继承