多态:
多态指的是同一个方法调用时,由于对象不同可能会有不同的行为
多态的三个必要条件:
继承,方法重写,父类引用指向子类对象
多态的实现方式:
方式一:重写
方式二:接口
方式三:抽象类和抽象方法
多态的优点:
- 1. 消除类型之间的耦合关系
- 2. 可替换性
- 3. 可扩充性
- 4. 接口性
- 5. 灵活性
- 6. 简化性
举个例子:
public class people {
public void sports(){
System.out.println("跑步");
}
}
class man extends people{ //man类继承people类
public void sports() { //重写people中的sports方法
System.out.println("快跑");
}
}
class woman extends people{ //woman类继承people类
public void sports(){ //重写people中的sports方法
System.out.println("慢跑");
}
}
public class submit {
public static void main(String[] args){
people m=new man(); //父类引用指向子类对象
m.sports(); //调用man类的sports方法,而不是people类的sports方法
people w=new woman(); //同理 父类引用指向子类对象
w.sports(); //调用woman类的sports方法,而不是people类的sports方法
}
}
执行结果:快跑
慢跑
注意:
因为m是people类的引用,所以调用m.sports()时,编译器会去people类中找sports()方法
在编译时,编译器使用people中的sports()方法验证该语句,但是在运行的时候,Java虚拟机(JVM)调用的是 man 类中的 sports() 方法。(一定要注意)