关于接口interface

1:接口的理解:可以理解为规范,法律法规制定好后,大家去遵守

2:定义接口的关键字:interface(和class并列)

3:接口内部接口声明

{

        》可以声明:

                        属性:必须是 static final修饰的全局常量不可修改(规范性)例如static final int MIX_SPEED=0  ,在接口中声明属性只能是全局常量,故可以省略static final修饰,直接在main函数中用接口名.调用(Flyable.MIX_SPEED)

                        方法:jdk8之前声明为抽象方法:public abstract 

  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
  • 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。(void flay();)
  • 接口中的方法都是公有的。

》不可声明

                        构造器 代码块

接口与类的关系 :实现关系

格式: class A extends superA implements B,C{}(B,C为两个不同接口,单继承,多接口)

注意:类的接口后必须重写类中所有方法,方可实例化(因为接口时abstract class),否则声明该类为抽象类( abstract class A implements B,C{})

A相较于superA为子类

A相较于B,C为实现类(重写抽象方法否则报错)故类可以实现多个接口,弥补了单继承的局限性

interface A{//相当于abstract static interface A(可以在main中A.调用属性不可方法,无方法体(抽象))
    void methon1();//相当于abstract void methon1();
}
interface B{
    void methon2();
}
interface C extends A,B{//C相当于子类接口,继承AB接口

}
class D implements C{
    @Override
    public void methon1() {
        
    }

    @Override
    public void methon2() {

    }//相当于两个接口,需要重写两个方法
    
}
接口的多态性:(如下)

public class test1{
    public static void main(String[] args) {
        Computer computer = new Computer();
        Printer printer = new Printer();//创建接口实例对象
        computer.transferdata(printer);
        computer.transferdata(new Printer());//创建接口实现类匿名对象
        //创建接口匿名实现类对象
        USB usb1 = new USB(){//new 一个接口实现类对象,只不过他没有名字
            @Override
            public void start() {
                System.out.println("U盘开始工作");

            }

            @Override
            public void stop() {
                System.out.println("U盘结束工作");

            }//进行改写

        };
        //创建接口匿名实现类的匿名对象
        computer.transferdata(new USB() {
            @Override
            public void start() {
                System.out.println("扫描仪开始工作");
            }

            @Override
            public void stop() {
                System.out.println("扫描仪结束工作");
            }
        });
    }

}
class Printer implements USB{//
    @Override
    public void start() {
        System.out.println("打印机工作");
    }

    @Override
    public void stop() {
        System.out.println("打印结束");
    }
}
class Computer{
    public void transferdata(USB usb){//多态:USB usb = Printer printer
        System.out.println("设备传输开始.....");
        usb.start();
        System.out.println("传输数据中");
        usb.stop();
        System.out.println("设备传输结束");

    }
}


interface USB{
    //可以声明一些属性
    //长宽等
    public abstract void start();
    void stop();

}

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值