众所周知:多态和封装、继承相继被称为面向对象编程语言的三大特性
对于多态,我们可以简单理解,譬如一个具体实例李四,他既是一名学生,也是一个人,而学生和人便是李四的两种形态。在java中,我们同样也需要用多种形态描述一个事物,因此便出现的了多态。 如果我们进一步深入探讨李四的两种形态,我们便可以发现李四的两种身份“学生”和“人”是一种“父子”关系,学生也是人的一种。而多态也是如此,多态的前提便是两者必须有父子类关系,即 class son extends father 体现为父类引用变量可以指向子类对象。
实现多态的必要条件们:
1.父子类:
我们只是通过一个父类就能够引用不同的子类,这就是多态
class son1 extends father
class son2 extends father
class son3 extends father
2.重写
子类需要重写父类方法
class father{
public void father(){
System.out.println("father");
}
}
class son1 extends father{
public void father(){
System.out.println("son1");
}
}
class son2 extends father{
public void father(){
System.out.println("son2");
}
}
class son3 extends father{
public void father(){
System.out.println("son3");
}
}
3.向上转型
我们知道,要创建son类,直接实例化son类即可,非常好理解,如:
son s1 = new son();
但是我们改成向上转型写法呢?
father s1 = new son();
上述两行中,我们定义了一个father类型的s1,但它指向的是son对象实例,由于son是继承于father,所以son可以自动向上转型为father,所以s1是可以指向son实例对象的。
多态的优点
1.可替换性:多态对于已经存在的代码具有可替换性,例如:多态对圆circle类工作,对其他任何圆形几何体也同样工作
2.灵活性:它再应用中体现了灵活多样的操作,提高了使用效率
3.可扩充性:多态对代码有可扩充性,增加新的子类不影响已经存在类的多态性、继承性以及其它特性
以上就是我初学多态以及对于多态的一些个人浅薄理解,如有错误还请指教。