什么是多态?
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
怎样实现多态?
Java 实现多态有 3 个必要条件:继承、重写和向上转型。只有满足这 3 个条件,开发人员才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而执行不同的行为。
-
继承:在多态中必须存在有继承关系的子类和父类。
-
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
-
父类引用变量指向子类对象(子类到父类的类型转换)
下面通过一个例子来演示重写如何实现多态性
/**
* 父类
*/
public abstract class Cai {
public abstract void print();
}
/**
* 子类
*/
public class GongBaoJiDing extends Cai {
public void print() {
System.out.println("这是宫保鸡丁");
}
}
/**
* 子类
*/
public class YuXiangRouSi extends Cai {
public void print() {
System.out.println("这是鱼香肉丝");
}
}
/**
* 定义一个为static静态的方法,返回值为父类Cai
*/
public class ChuFang {
public static Cai shengChan(String name){
if(name.equals("宫爆鸡丁")){ //如果name等于"宫爆鸡丁"则返回一个新对象
return new GongBaoJiDing();
}
else if (name.equals("鱼香肉丝")) {
return new YuXiangRouSi(); //如果name等于"宫爆鸡丁"则返回一个新对象
}else {
return null;
}
}
}
/**
* 测试类
*/
import java.util.Scanner;
public class TestCai {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请选择菜品:(1、宫保鸡丁 2、鱼香肉丝)");
int name = input.nextInt();
Cai cai =null;
if (name ==1) {
cai = ChuFang.shengChan("宫爆鸡丁");
}else {
cai = ChuFang.shengChan("鱼香肉丝");
}
cai.print();
}
}
输出结果如下图: