接口

 

子类继承父类,自动拥有父类的功能,

需要扩展功能的话,需要用到接口

package com.Study.ByStd.InterFace_;

public class InterFace03 {
    public static void main(String[] args) {
        LittleMonkey littleMonkey = new LittleMonkey("大圣");
        littleMonkey.work();//这项功能来自父类
        littleMonkey.fly();//这个fly的功能来自接口(扩展功能)
    }
}
class monkey{
    private String name;

    public monkey(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String tree(){
        return "在爬树";
    }
}
class LittleMonkey extends monkey implements bird{

    public LittleMonkey(String name) {
        super(name);
    }

    public void work(){
        System.out.println(getName()+super.tree());
        System.out.println(getName()+fly());
    }

    @Override
    public String fly() {
        return "能飞";
    }
}
interface bird{
    public String fly();
}

 

  

package com.Study.ByStd.InterFace_;

public class Computer {

    //相当于主设备生成一个接口插槽,别的设备可以通过这个插槽插入这个主设备
    //括号里面就是实现了USb...这个接口的类的对象实例
    public void work(USBinterface u1) {
        u1.start();
        u1.stop();
    }
}
package com.Study.ByStd.InterFace_;

public class InterFaceo1 {
    public static void main(String[] args) {
        //创建两个设备的对象
        Camera camera = new Camera();
        Phone phone = new Phone();

        //创建一个计算机
        Computer computer = new Computer();
        computer.work(phone);//相当于把手机接入计算机
        computer.work(camera);//相当于把相机接入计算机
    }
}

  (多态参数:Computer类里面的方法的参数用的是接口类的实例,等到main里面调用这个方法的时候,传入的参数可以是实现这个接口的类的对象)

package com.Study.ByStd.InterFace_;

public class InterFacePolymorphic {
    public static void main(String[] args) {
        //多态!
        //接口的对象实例是实现接口的类
        //相当于向上转型(父类的引用指向了子类的对象)
        FF f1 = new AA();
        f1 = new BB();
    }
}
interface FF{}
class AA implements FF{}
class BB implements FF{}

(所谓的多态就是接口的实例指向实现接口的类的对象) 

package com.Study.ByStd.InterFace_;

public class InterfacePolyArr {
    public static void main(String[] args) {

        //多态数组——>数组的类型是接口类,数组的具体数值是实现接口的类的具体实例
        Usbb[] u1 = new Usbb[2];
        u1[0] = new Myphone();
        u1[1] = new Camera_();

        //遍历接口数组
        for (int i = 0; i < u1.length; i++) {
            u1[i].work();

            //如何调用Myphone 类里面的特有方法?
            //用到类型判断instansof
            if (u1[i] instanceof Myphone){
                ((Myphone) u1[i]).call();//向下转型
            }
        }
    }
}
interface Usbb{
    void work();
}
class Myphone implements Usbb{
    @Override//实现接口的方法
    public void work() {
        System.out.println("手机工作");
    }

    public void call(){
        System.out.println("打电话");
    }
}
class Camera_ implements Usbb{
    @Override
    public void work() {
        System.out.println("相机工作");
    }


}

数组多态就是数组的类型是接口的类型,但是数组的具体的值是实现接口的类的实例

接口的多态就相当于接口可以相互继承

package com.Study.ByStd.InterFace_;

//接口的多态传递(接口与接口之间也可以相互继承)
public class InterfacePolyPass {
    public static void main(String[] args) {
        F1 f1 = new ff();
        // 当F2没有继承F1接口的时候,
        // F2和ff类没有任何关系,所以F2接口的对象不能指向ff类的对象实例
        F2 f2 = new ff();

        //本来ff类实现的是F2这个接口,但是F2继承了F1这个接口,
        // 所以相当于ff类把两个接口都实现了(ff类要把这两个接口的里面的标准都实现)


    }
}
interface F1{
    void play();

}
interface F2 extends F1{
    void hhh();
}
class ff implements F2{
    @Override
    public void play() {

    }

    @Override
    public void hhh() {

    }
}

如果一个类继承了一个父类,有实现了一个接口,那么像访问父类的属性用 super. 

想访问接口的属性(接口里面的属性是public static final 的)可以 接口类名.     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值