给定一个接口`Drawable`,包含一个抽象方法`draw()`,以及一个类`Circle`,实现了`Drawable`接口。现在有一个方法`processShape(Drawable d)`,该方法接收一个`Drawable`类型的参数。以下哪种方式调用`processShape`方法会导致编译错误?
答案解析
A选项正确,`Circle`是`Drawable`的实现类,可以直接传递给`processShape`方法,符合多态的原则。B选项正确,先创建一个`Circle`对象,赋值给`Circle`类型的变量,然后传递给`processShape`方法,这里发生了隐式向上转型,符合多态原则。C选项正确,先创建`Circle`对象,然后向上转型为`Drawable`接口的引用,再将其传递给`processShape`,符合多态原则。D选项错误,接口是抽象的,不能直接实例化,编译时会报错。因此,尝试直接new一个接口对象是非法的。
正确答案:D