目录
java是一门面向对象的变成语言,面向对象编程有三大特性:封装、继承、多态。
1.多态的基本介绍
百度百科中这样解释:在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。
菜鸟教程里这样解释:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,多态性是对象多种表现形式的体现。
Java是面向对象的语言,同样可以描述一个事物的多种形态。同样个一个Ctrl+Shift+a,在有些浏览器的截屏操作,有些是打开标签页。
2.多态的优点
1. 消除类型之间的耦合关系
有了多态,左边是父类(或者接口),右边是子类(或实现类),只需要调用接口里面的方法就可以了,不再需要考虑等号左右的元素类型。
2. 可替换性
多态对已存在代码具有可替 换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如 圆环,也同样工作。
3. 可扩充性
多态对代码具有可扩充性。增 加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类 的多态性。
4. 接口性
多态是超类通过方法签名, 向子类提供了一个共同接口,由子类来完善或者覆盖它而实现 的。子类如Circle和 Sphere为了实现多态,完善或者覆盖这两个接口方法。
5. 灵活性
它在应用中体现了灵活多样的操作,提高了使用效率。
6. 简化性
多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
3.java多态存在的三个必要条件
1.继承
2.重写
3.父类引用指向子类对象:Parent p = new Child();
4.多态的代码的定义和使用
定义格式:父类类型 变量名=new 子类类型();
Fu f=new Zi();
System.out.println(f.num);
System.out.println(f1.show());
class Shape {
void draw() {}
}
class Circle extends Shape {
void draw() {
System.out.println("Circle.draw()");
}
}
class Square extends Shape {
void draw() {
System.out.println("Square.draw()");
}
}
class Triangle extends Shape {
void draw() {
System.out.println("Triangle.draw()");
}
}
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。(摘抄自菜鸟教程Java 多态 | 菜鸟教程)
(补充:一个Java类只能直接继承自一个父类)