java-接口多态特性
上一章节讲的
(1)多态参数举例
(2)多态数组举例
多态数组举例源码
package com.Interface;
public class InterfaceArr {
public static void main(String[] args) {
//(2)多态数组 -> 接口类型数组
Usb[] usbs = new Usb[2];
usbs[0] = new Phone_();
usbs[1] = new Camera_();
//遍历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(“相机工作中。。”);
}
}
(3)接口多态传递
源码
package com.Interface;
public class InterfacePass {
public static void main(String[] args) {
//接口类型的变量可以指向 实现了该接口的类的对象实例
IG ig = new Teacher();
//如果IG继承了IH接口 而 Teacher类实现了IG接口
//那么 实际上就相当于Teacher类也实现了IH接口
//这就是所谓的多态传递现象
IH ih = new Teacher();
}
}
interface IH {
void hi();
}
interface IG extends IH {
}
class Teacher implements IG {
@Override
public void hi() {
}
}