概述
- 多态参数
在前面的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{
}
最后
以上就是整齐哑铃为你收集整理的Java-接口-接口的多态特性的全部内容,希望文章能够帮你解决Java-接口-接口的多态特性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复