E是D的子类所以E的实例可以声明为D类型
变量e声明类型是D( D e ), 而实际类型是E( new E() ),不需要进行显示类型转换
D e = (D)(new E()) 和 D e = new E()没有区别
因为把变量e声明为D类型,D实现(implements)B,所以e可以调用方法bMethod()
但是变量e的实际类型是E,E这个类覆盖了D类的bMethod(第9行不写的话调用的是第5行的bMethod,写了就覆盖了D的bMthod)
所以e.bMethod()调用的就是第9行也就是覆盖父类方法的bMethod()