Java接口

目录

目录

概念:

语法:

注意:

引入案例:

细节(复习必看):

接口与继承的比较:

接口和集成解决的问题不同

接口比继承更加灵活

接口在一定程度上实现代码解耦[即:接口规范性+动态绑定机制]

接口的多态:

多态参数

多态数组

3.如果一个类实现某个接口A,但该接口继承了接口B,那么该类需要实现接口B

一个不常见的题目:


概念:

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

语法:

interface 接口名 {

        //属性

        //方法

}

class 类名 implements 接口 {

        自己属性

        自己方法

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

}

注意:

1.在jdk7.0前接口里的所有方法都没有方法体

2.jdk8.0后接口类可以有静态方法,默认方法,也就是说接口中可以有方法的具体实现

引入案例:

手机相接可以通过电脑传入数据,请用代码实现。

UsbInterface接口

public interface UsbInterface {
    public void start();
    public void stop();
}

 Computer类

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

 Phone类

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

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

Camera类

public class Camera implements UsbInterface {//实现接口,本质就是把接口方法实现

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

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

测试类

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的关系

接口在一定程度上实现代码解耦[即:接口规范性+动态绑定机制]

接口的多态:

多态参数

多态数组

这个和继承时那个多态数组用法一样

        UsbInterface[] usbInterfaces = new UsbInterface[20];
        usbInterfaces[0] = new Phone();

3.如果一个类实现某个接口A,但该接口继承了接口B,那么该类需要实现接口B

public class InterfacePolyPass {
    public static void main(String[] args) {
        IG ig = new Teacher();
        IH ih = new Teacher();
    }
}

interface IH {
    void ih();
}
interface IG extends IH { }

class Teacher implements IG {

    @Override
    public void ih() {

    }
}

 

一个不常见的题目:

早上刷题遇到了一个有意思的题,想要分享一下,

interface IA {
    static void method();
}

觉得这个正确吗?

答案是错误的。

 

接口中static修饰的方法必须有方法体。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值