Java接口

接口

基本介绍

接口就是给出一些没有实现的方法,封装到一起,到某i个类要使用的时候,在根据具体情况把这些方法写出来。语法:

interface 接口名{

//属性

//方法(1.抽象方法 2.默认实现方法 3.静态方法)

}

class 类名 implements 接口{

自身属性

自身方法

必须实现的接口的抽象方法

}

public interface AInterface {
    //写属性
    public int n = 10;
    //写方法
    //在接口中,抽象方法,可以省略abstract关键字,
    public void hi();
    //在jdk8后,可以有默认实现方法, 需要使用default关键字修饰
    default public void ok(){
        System.out.println("ok");
    }
    //在jdk8后,可以有静态方法
    public static void cry(){
        System.out.println("1111");
    }

}

小结:
  1. 在jdk7.0前,接口里所有方法都没有方法体
  2. jdk8.0后接口类可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现
public interface UsbInterface {
    public void start();//抽象类
    public  void stop();//抽象类
}



//Phone类 实现 UsbInterface接口
//解读1. Phone类需要实现 UsbInterface接口 规定/声明的方法

public class Phone implements UsbInterface{
    @Override
    public void start() {
        System.out.println("手机开始工作.....");
    }

    @Override
    public void stop() {
        System.out.println("手机停止工作");
    }
}


public class Camera implements  UsbInterface{//实现接口

    @Override
    public void start() {
        System.out.println("相机开始工作");
    }

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

    }
}


public class Computer {
    //编写一个方法
    public void work(UsbInterface usbInterface){
        //通过接口来调用方法
        usbInterface.start();
        usbInterface.stop();
    }
}



public class Interface01 {
    public static void main(String[] args) {
        //创建手机,相机对象
        Camera camera = new Camera();
        Phone phone = new Phone();
        //创建计算机对象
        Computer computer = new Computer();
        computer.work(phone);//把手机接入计算机
        System.out.println("========");
        computer.work(camera);//把相机接入计算机
    }
}

使用的注意事项和细节

  1. 接口不能被实例化,因为接口本身就是抽象的
  2. 接口中所有的方法都是public方法,接口中抽象方法,可以不用abstract修饰
  3. 一个普通类实现接口,就必须将该接口的所有方法都实现
  4. 抽象类实现接口,可以不用实现接口的抽象方法
  5. 一个类同时可以实现多个接口
  6. 接口中的属性,只能是final修饰的,而且是public static final 修饰符。
  7. 接口中属性的访问形式:接口名.属性名
  8. 一个接口不能继承其他的类,但是可以继承多个别的接口
  9. 接口的修饰符只能是public和默认,这点和类的修饰符是一样的

实现接口和抽象类的区别

  • 接口和继承解决的问题不同
    • 继承的价值主要在于:解决代码的复用性和可维护性
    • 接口的价值主要在于:设计,设计好各种规范(方法),让其它类去实现这些方法
  • 接口比继承更加灵活
    • 接口比继承更加灵活,继承是满足is - a 的关系,而接口只需要满足like - a 的关系
  • 接口在一定程度上实现代码解耦
  • 实现接口是对java单继承的一种补充

接口的多态特性

  1. 多态参数
    • 在前面的Usb接口案例。Usb usb,既可以接收手机对象,又可以接收相机对象,就体现了接口多态(接口引用可以指向实现了接口的类的对象)
  2. 多态数组
    • 演示一个案例:给Usb数组中,存放Phone和相机对象,Phone类还有一个特有的方法call(),请遍历Usb数组,如果是Phone对象,除了调用Usb接口定义的方法外,还需要调用Phone特有方法call
  3. 接口存在多态传递现象
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值