多态:简单的来说,就是父类引用指向之类对象。因为多态是面向对象的特性,所以,多态也一定是针对对象的术语。多态有一个先决条件。就是一定要有继承关系。
举例:
(1)创建一个汽车父类。
/**
*汽车类-父类
* @author z_y
*/
public class Vehicle {
public void run(){
System.out.println("汽车跑起来了!");
}
}
(2)创建一个小汽车子类,重写父类中的run方法。
/**
*小汽车-子类
* @author z_y
*/
public class Car extends Vehicle {
@Override
public void run(){
System.out.println("小汽车跑起来了!");
}
}
(3)创建一个自行车类,重写父类中的run方法。
/**
*自行车类-子类
* @author z_y
*/
public class Bicycle extends Vehicle {
@Override
public void run(){
System.out.println("自行车跑起来了!");
}
}
(4)编写一个测试类
/**
*多态测试类-父类引用指向子类对象
* @author z_y
*
*/
public class Demo {
public static void main(String[] args) {
//创建一个父类对象
Vehicle vehicle = new Vehicle();
vehicle.run(); //调用父类的run方法。
//用父类的引用指向一个子类对象-父类对象的多态
vehicle = new Car();
vehicle.run(); //调用car子类中的run方法
//用父类的引用指向另一个子类对象-父类对象的多态
vehicle = new Bicycle();
vehicle.run(); //调用bicycle子类中的run方法
}
}
在上面的测试代码中,父类对象先后指向两个子类对象,这种行为。就是多态。
3.应用:多态在面向对象中有广泛的应用,例如:当我们不知道参数的具体类型时,使用父类引用来接收参数,可以起到很好的效果。
比如 定义 void f(int a){}
再定义 int f(){}
这时候调用f函数 根据不同的形参 会调用不同的函数
这里就实现了函数的重载
同一操作作用于不同对象,可以有不同的解释,有不同的执行结果,这就是多态。
Java使用动态绑定来使多态成为可能,它指的是Java用来在运行时选择调用的方法或对象的机制.重载构成了了Java中的一种特殊的多态机制,它表现在当一个类的两个或者两个以上的方法拥有相同的名字但是不同的参数列表,或者说"方法签名".一个方法的签名指的是方法的名字以及参数的类型和数目.类的每一个方法都有与之相关的唯一的签名.类可以有多个名字相同的方法只要它们的参数列表是唯一的.例如,我们能够为Animal类定义两个名字为getHello的方法,用其中一个方法来获得动物通常的叫声,而用另一个获得当动物被惊吓或是抚摩的时候的叫声
最直接的体现就是 重载
函数的重载 运算符的重载 等等