关于多态的低级错误

150 阅读1分钟

最近在刷力扣的时候发现了一个低级错误,错误如下:

List<Integer> list =new LinkedList();
list.removeLast();// 报错!

原因很简单:在用list作为一个List类型的引用变量指向一个LinkedList对象时,发生了多态。我们都知道多态就是指父类引用指向子类对象,根据不同子类对象产生不同的行为。其中比较重要的一点是当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。 List接口中并没有该方法,因此编译报错。
因此,如果使用多态来调用方法,一定要保证父类有该方法的声明!
正确代码如下:

LinkedList<Integer> list =new LinkedList();
list.removeLast();