谈谈我对多态的理解

2018/09/11

谈谈我对多态的理解

什么是多态

多态是面向对象的特性之一,从字面上理解,多态就是指一个对象在运行是会有多种形态,就比如可以说student是一个person,也可以说student是一个object。

我们来看一个经典的例子:

Service service=new ServiceImpl();

我们经常看到这样的代码,这就是多态的一种表现。

为什么要多态

多态可以让代码更加灵活,再举一个例子:

List<String> list=new ArrayList<>();

这也是我们常写的一句代码,为什么不把List换成ArrayList?

一个很大的原因就是要考虑到以后的情况,假设以后ArrayList已无法满足我们软件的需求,这时候可能需要一个和ArrayList相似的类来替代它,那么如果我们直接面向具体的类进行编程,以后的可维护性肯定会变差,所以多态能使我们面向抽象进行编程,使代码更加地灵活。

多态的缺点

那么多态肯定会有它的缺点,那就是我们无法调用我们具体类的方法。什么意思?举个例子:

假设我们的Person类有一个speak方法,Student类是从Person类继承过来的,它有一个额外的方法study。

那么我们直接这样:

Person student=new Student();

很明显,这样我们就失去了study这个方法。

Post Directory