Java-接口-接口的多态特性

  • 多态参数

在前面的Usb接口案例,Usb usb,既可以接收手机对象,又可以接收相机对象,就体现了 接口多态(接口引用可以指向,体现了接口类的对象)

  • 多态数组

演示一个案例:给Usb数组中,存放Phone 和 相机对象,Phone类还有一个特有的方法call(),请遍历Usb数组,如果是Phone对象,除了调用Usb接口定义的方法外,还需要调用Phone 特有方法 call

举例(1)

package com.tao.interface_;

/**
 * Create By 刘鸿涛
 * 2021/12/26 15:23
 */
public class InterfacePolyArr {
    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_) usbs[i]).call();
            }
        }
    }
}

interface Usb{
    void work();
}
class Phone_ implements Usb{
    public void call(){
        System.out.println("手机可以打电话...");
    }

    @Override
    public void work() {
        System.out.println("手机工作中...");
    }
}
class Camera_ implements Usb{

    @Override
    public void work() {
        System.out.println("相机工作中...");
    }
}



举例(2)

package com.tao.interface_;

/**
 * Create By 刘鸿涛
 * 2021/12/26 12:51
 */
public class InterfacePolyParameter {
    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 BBB{

}

举例(2)

package com.tao.interface_;

/**
 * Create By 刘鸿涛
 * 2021/12/26 16:41
 */
public class InterfacePolyPass {
    public static void main(String[] args) {
        //接口类型的变量可以指向,实现了该接口的类的对象实例
        IG ig = new Teacher();
        //如果IG 继承了 IH 接口,而Teacher 类实现了 IG接口
        //那么,实际上就相当于 Teacher 类也实现了 IG接口
        //这就是所谓的 接口多态传递现象
        IH ih = new Teacher();
    }
}

interface IH{}
interface IG extends IH{}
class Teacher implements  IG{

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼鬼骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值