学习Java第25天,接口的使用

接口的使用
1. 接口的理解:接口的本质是契约、标准、规范,就像我们的法律一样。制定好后大家都要遵守。
2. 定义接口的关键字:interface
3. 接口内部结构的说明:
   > 可以声明:
        属性:必须使用public static final修饰
        方法:jdk8之前:声明抽象方法,修饰为public abstract
             jdk8:声明静态方法、默认方法
             jdk9:声明私有方法

   > 不可以声明:构造器、代码块等

4. 接口与类的关系 :实现关系
5. 格式:class A extends SuperA implements B,C{}
A相较于SuperA来讲,叫做子类
A相较于B,C来讲,叫做实现类。


6. 满足此关系之后,说明:
> 类可以实现多个接口。
> 类针对于接口的多实现,一定程度上就弥补了类的单继承的局限性。
> 类必须将实现的接口中的所有的抽象方法都重写(或实现),方可实例化。否则,此实现类必须声明为抽象类。

7. 接口与接口的关系:继承关系,且可以多继承

8. 接口的多态性: 接口名 变量名 = new 实现类对象;


9. 面试题:区分抽象类和接口

> 共性:都可以声明抽象方法
       都不能实例化

> 不同:① 抽象类一定有构造器。接口没有构造器
       ② 类与类之间继承关系,类与接口之间是实现关系,接口与接口之间是多继承关系
public class USBTest {

    public static void main(String[] args) {

        //1.创建接口实现类的对象
        Computer computer =  new Computer();
        Printer printer = new Printer();

        computer.transferData(printer);

        //2.创建接口实现类的匿名对象
        computer.transferData(new Camera());
        System.out.println();

        //3.创建接口匿名实现类的对象
        USB usb1 = new USB(){
            public void start(){
                System.out.println("U盘开始工作");
            }
            public void stop(){
                System.out.println("U盘结束工作");
            }
        };
        computer.transferData(usb1);

        //4. 创建接口匿名实现类的匿名对象

        computer.transferData(new USB(){
            public void start(){
                System.out.println("扫描仪开始工作");
            }
            public void stop(){
                System.out.println("扫描仪结束工作");
            }
        });

    }

}

class Computer{

    public void transferData(USB usb){ //多态:USB usb = new Printer();
        System.out.println("设备连接成功....");
        usb.start();

        System.out.println("数据传输的细节操作....");

        usb.stop();
    }

}

class Camera implements 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("打印机结束工作");
    }
}

interface USB{
    //声明常量
    //USB的长、宽、高、...

    //方法
    public abstract void start();
    public abstract void stop();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值