多态参数
接口引用可以指向实现接口类的对象
package test;public class Main {public static void main(String[] args) {//接口的多态体现//接口类型的变量 if01 可以指向 实现了IF接口类的对象实例IF if01 = new Monster();if01 = new Car();//继承体现的多态//父类类型的变量 a 可以指向 继承AAA的子类的对象实例AAA a = new BBB();a = new CCC();}}interface IF {}class Monster implements IF {}class Car implements IF {}class AAA {}class BBB extends AAA {}class CCC extends AAA {}
多态数组
案例
给Usb数组中,存放Phone和相机对象,Phone类还有一个特别的方法call(),请遍历Usb数组,如果是Phone对象,除了调用Usb接口定义的方法外,还需要调用Phone的特有方法call
package test;public class Main {public static void main(String[] args) {//多态数组 -> 接口类型数组Usb[] usbs = new Usb[2];usbs[0] = new Phone();usbs[1] = new Camera();/*给Usb数组中,存放 Phone 和 相机对象,Phone类还有一个特有的方法call(),请遍历Usb数组,如果是Phone对象,除了调用Usb 接口定义的方法外,还需要调用Phone 特有方法 call*/for(int i = 0; i < usbs.length; i++){usbs[i].work();//动态绑定//和前面一样,我们仍然需要进行类型的向下转型if(usbs[i] instanceof Phone){//判断他的运行类型是 Phone_// Phone phone = (Phone)usbs[i];// phone.call();((Phone)usbs[i]).call();}}}}interface Usb{void work();}class Phone implements Usb {public void call() {System.out.println("手机可以打电话...");}@Overridepublic void work() {System.out.println("手机工作中...");}}class Camera implements Usb {@Overridepublic void work() {System.out.println("相机工作中...");}}
接口存在多态传递现象
package test;/*** 演示多态传递现象*/public class Main {public static void main(String[] args) {//接口类型的变量可以指向,实现了该接口的类的对象实例IG ig = new Teacher();//如果IG 继承了 IH 接口,而Teacher 类实现了 IG接口//那么,实际上就相当于 Teacher 类也实现了 IH接口.//这就是所谓的 接口多态传递现象.IH ih = new Teacher();ih.hi();ig.hi();}}interface IH {void hi();}interface IG extends IH{}class Teacher implements IG {@Overridepublic void hi() {System.out.println("hi~~");}}

