Java的多态
复习一下
什么是多态?
简单来说,多态就是同一个接口,使用不同的实例(不同的实现类创建的实例)而执行不同操作。
(除了使用接口,多态的实现还可以是子类对父类的方法重写,或是抽象类与抽象方法)
多态存在的三个必要条件?
1)继承
2)重写
3)父类引用指向子类对象 Parent parent = new Child();
多态的一个特性:
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:
可以使程序有良好的扩展,并可以对所有不同的实现类的对象进行通用处理。
// Animal接口
public interface Animal {
void voice();
}
//实现类1:Dog
public class Dog implements Animal{
@Override
public void voice() {
System.out.println("wangwang");
}
public void introduce(){
System.out.println("我是一条狗");
}
}
//实现类2:Cat
public class Cat implements Animal{
@Override
public void voice() {
System.out.println("miaomiao");
}
public void introduce(){
System.out.println("我是一只猫");
}
}
//实现类3:Bird
public class Bird implements Animal{
@Override
public void voice() {
System.out.println("zhazha");
}
public void introduce(){
System.out.println("我是一只鸟");
}
}
Animal animal = new Dog();
此时,animal可以使用voice()函数,并发出“wangwang”的声音;但不能使用Dog类中的introduce()函数,因为创建对象时类型是Animal,只有Animal接口中的函数可以使用,使用时调用的是Dog类中的voice(),因为创建的对象是Dog。