java中多态中向下转型的问题

public class Father {
public void show (){
System.out.println("父类方法");
}
public void show1(){
System.out.println("父类二方法");
}
}
public class Son extends Father {
public void show(){
System.out.println("子类方法");
}
public void show2(){
System.out.println("子类2方法");
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Father son=new Son();
son.show();
son.show1();
Son son1=(Son) son;
son1.show();
son1.show1();
son1.show2();
}

    为什么son1.show1()  也会出现,该怎么理解?

Son 继承了Father中show1方法啊,所以son1.show1();会出现

子类的实例都可以调用父类中的非私有方法,所以son1会有show1()。
而子类中也有show方法,则父类的show方法就无效了。

如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量。

子类继承父类未被重写的方法,没有问题。

向下转型的意思是子类可以用自己的方法了,但大前提是不变的,子类还在继承父类。所以子类还可以调父类方法。