执行顺序
父类静态代码块->子类静态代码块->父类动态代码块->父类构造方法->子类动态代码块->子类构造方法
父类对象指向子类对象,只能调用父类中定义的方法,如被重写,则执行子类的方法,如果调用没有定义的方法,则编译出错。
class Father{
private String name = "Father";
static {
System.out.println("Father static block");
}
{
System.out.println("Father block");
}
public Father(){
System.out.println("Father constructor");
}
public void test(){
System.out.println("test Father");
}
public void f(){
System.out.println("f()");
}
}
public class Son extends Father{
public String name= "Son";
static {
System.out.println("Son static block");
}
{
System.out.println("Son block");
}
public Son(){
System.out.println("Son constructor");
}
public void s(){
System.out.println("s()");
}
public static void main(String[] args){
new Son();
Father son = new Son();
//System.out.println(son.name);
son.f();
//son.s();
}
}