子类继承父类其实就是实例出一个新的类, 只是这个类的一些实例变量父类也有.
所以当我们用一个父类指针时, 其实就是告诉编译器这个变量是一个父类对象, 只有父类中存在的实例变量, 因此当我们用这个父类指针指向一个子类对象时, 是不存在问题的.
可以理解为, 我只利用子类对象中, 父类对象存在的实例变量, 只是浪费一些堆内存空间而已.
如此解释, 那么在运行的时候自然也是没有问题的.
但是, 当我们用一个子类指针指向父类对象的时候. 编译器是可以通过的, 因为它就是认为, 这个对象是一个子类对象.
但是, 当我们运行的时候就会有问题, 因为无法真正的在一个父类对象中找到子类对象的实例对象和方法.