多态指程序中定义的对象引用或者调用的方法在编译器不能确定,只有在程序运行期间才能确定具体的对象或者具体的调用方法。
实现多态通常需要三个条件:继承、重写、向上转型。
通常定义超类对象的引用,而该引用在运行期间指向确定的子类,调用子类重写后的方法。如常见的List
List<String> list=new ArrayList<>();
通常Java中有两种机制实现多态:
1.继承或者接口实现多态
2.方法重载。
1.继承、接口实现多态
子类覆盖父类方法或者实现接口中方法来实现多态。
public abstract class Animal {
abstract void fly();
}
public class Dog extends Animal{
@Override
void fly() {
System.out.println("Dog can't fly");
}
}
public class Duck extends Animal {
@Override
void fly() {
System.out.println("Duck fly with wing");
}
}
public static void main(String[] args)
{
Animal duck;
Animal dog;
duck=new Duck();
dog=new Dog();
duck.fly();
dog.fly();
}
Duck fly with wing
Dog can't fly
2.函数重载
函数重载属于编译时多态,多个方法具有相同的函数名,具有不同的参数类型、参数个数,根据调用时传入的参数进行选择确定具体调用哪个方法。
返回值类型不作为重载条件。但是重载的方法可以具有不同返回类型。
网友评论