概述
多态是继封装性,继承性之后面向对象的第三大特征。
定义: 是指同一行为,具有多个不同的表现形式。
在生活中,比如飞这个动作,昆虫、鸟、飞机飞起来的动作内容都是不一样的。同一行为,通过不同事物,可以表现出不同的形态。多态,描述的就是这样的一种状态。
多态的前提
- 继承或实现【二选一】
- 父类的引用指向子类的对象【格式体现】
- 方法的重写【意义:不重写,是毫无意义的】
多态的表现
多态的表现格式:
父类类型 变量名 = new 子类对象;
变量名.方法名;
备注:父类类型指的是子类对象继承的父类类型,或者实现的父类型接口。可以简单理解为父类类名。
代码示例:
public class Fu{
public void method(){
System.out.println("这是父类的method方法");
}}
public class Zi extends Fu{
@Override
public void method(){
System.out.println("这是子类的method方法");
}
}
//polymorphism 多态
public class TestpolymorphismDemo01{
public static void main(String[] args){
//多态的格式
/*
父类类型 变量名 = new 子类对象;
变量名.方法名();
*/
//父类的引用指向了子类的对象
Fu fu = new Zi();
fu.method();//本质调用的是子类当中重写之后的method方法
}
}
我们需要知道如果在使用多态方式调用方法时,会首先检查父类当中是否有该方法,如果没有,则编译报错;如果有,则执行的是子类重写后的方法。
多态的好处
在实际开发中,父类类型作为方法的形式参数(不同于实际参数),传递子类对象(实参)给方法,进行方法的调用,更能体现出多态的扩展性和便利性。可见如下代码