Base是Extender的父类,因此这里可以将Extender类对象赋值给Base类型变量。这里企图执行base.hello(),那么编译时会报错。因为Base类并没有hello()方法,那么编译器认为Base类型的base对象也理所当然没有。但如果我们使用as告知编译器base对象其实是属于Extender类型的,那么编译器就会查一下。如果【果然】是属于Extender类型的,就会顺利编译,并执行成功;如果不是,那么as表达式返回的就是空对象null。
Base是Extender的父类,因此这里可以将Extender类对象赋值给Base类型变量。这里企图执行base.hello(),那么编译时会报错。因为Base类并没有hello()方法,那么编译器认为Base类型的base对象也理所当然没有。但如果我们使用as告知编译器base对象其实是属于Extender类型的,那么编译器就会查一下。如果【果然】是属于Extender类型的,就会顺利编译,并执行成功;如果不是,那么as表达式返回的就是空对象null。