接口知识总结

接口

1、接口概述

1.1 接口的简单介绍

Java提供了一个关键字interface,用这个关键字我们可以定义出一个特殊的结构:接口。

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为或者是功能。接口也是一种规范。

1.2 接口的定义

在这里插入图片描述

JDK8之前接口中只能有常量和抽象方法,后面会展示出之后的方法。

1.3 接口的特点

  1. 在 java 中接口采用 interface 声明
  2. 接口中的方法默认都是 public abstract 的,不能更改(JDK8之前)
  3. 接口中的变量默认都是 public static final 类型的,不能更改,所以必须显示的 初始化
  4. 接口不能被实例化,接口中没有构造方法
  5. 一个接口可以同时继承多个接口
  6. 一类可以实现多个接口
  7. 一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类。
  8. 接口中的方法只能通过类来实现,通过 implements 关键字

1.4 接口的使用

  1. 接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rhvuwoxg-1671763906176)(D:\java\黑马se笔记\笔记图片\接口1)]

  1. 实现类

在这里插入图片描述

  1. 测试类

    在这里插入图片描述

1.5 接口与接口的多继承

一个接口可以继承多个接口。

修饰符 interface 子接口名 extends 接口1, 接口2, 接口3 , ...  {
}

举例:

  1. 接口1

    public interface Flyable {
        void fly();
    }
    
  2. 接口2

    public interface Runnable {
        //JDK8之前的接口中只能定义常量和抽象方法,不能定义其他成分
        //public static final String NAME="动物名";
        String NAME="动物名";
    
        //public abstract void run();
        void run();
    }
    
  3. 子接口

    public interface JiaQin extends Runnable,Flyable{
    }
    
  4. 实现类

    public class Chicken implements JiaQin{
        @Override
        public void run() {
            System.out.println("鸡是两条腿的,也跑不快");
        }
    
        @Override
        public void fly() {
            System.out.println("鸡是可以飞一下的,但是不高");
        }
    }
    

    **注意:**实现子接口名的类必须实现后面所有接口中的所有抽象方法。

接口多继承的作用

规范合并,整合多个接口为同一个接口,便于子类实现。

1.6 继承抽象类的同时实现多个接口

实现1个或多个接口的,语法如下:

修饰符 class 实现类 extends 基类名 implements 接口1, 接口2, 接口3 , ... {
}

**注意:**1、这里的基类可以是抽象类,也可以是非抽象类;这里重点学习继承抽象类。

​ 2、如果继承自抽象类,那么实现类要重写完抽象类和所有接口中的所有抽象方法,否则实现类也必须声明 为抽象类。

这样的好处:

  1. 弥补了单继承的不足,可以让类继承一个类的同时实现多个接口,但需要同时实现所有抽象方法。
  2. 让程序面向接口编程,程序员可以更灵活的切换业务。

1.7 JDK8新特性

JDK8版本开始后,Java对接口的成员方法进行了新增。(允许接口中直接定义带有方法体的方法)

  1. 第一种:默认方法

    • 类似之前写的普通实例方法:必须 用default修饰。

    • 默认会public修饰。需要接口的实现类的对象来调用。

  2. 第二种:静态方法

    • 默认会public修饰,必须static修饰。

    • 注意:接口的静态方法必须用本身的接口名来调用。

  3. 第三种:私有方法

    • 必须使用private修饰,从JDK 1.9才开始有的

    • 根据是否有static关键字修饰,私有方法可以分为非静态私有方法和静态私有方法。

    • 非静态私有方法只能在本类中被其他的默认方法或者私有方法访问。

    • 静态私有方法还能在本类的其他静态方法中访问。

    注意:JDK8新增的3种方法我们自己在开发中很少使用,通常是ava源码涉及到的,我们需要理解、识别语法、明白调用关系即可。

    案例:

    public interface Inter {
        //1、默认方法 必须有default修饰,默认有public修饰
        default void defaultMethod(){
            System.out.println("默认方法执行了");
            privateMethod();
            privateMethod2();
        }
    
        //2、静态方法
        //必须有static修饰,默认有public修饰
        static void staticMethod(){
            System.out.println("静态方法执行了");
            privateMethod2();
        }
    
        //3、私有方法,从JDK9开始的
        //非静态私有方法
        //必须有private修饰
        //用接口中的默认方法调用
        private void privateMethod(){
            System.out.println("私有方法执行了");
        }
    
        //静态私有方法
        //可以用接口中的默认方法和静态方法调用
        private static void privateMethod2(){
            System.out.println("静态私有方法执行了");
        }
    }
    

1.8 接口的一些注意事项

​ 1、接口不能创建对象

​ 2、一个类实现多个接口,多个接口的规范不能冲突

​ 3、一个类实现多个接口,多个接口中有同样的静态方法不冲突。(因为静态方法属于各自的接口)

​ 4、一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。

​ 5、一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。

8 接口的一些注意事项

​ 1、接口不能创建对象

​ 2、一个类实现多个接口,多个接口的规范不能冲突

​ 3、一个类实现多个接口,多个接口中有同样的静态方法不冲突。(因为静态方法属于各自的接口)

​ 4、一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的。

​ 5、一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可。

​ 6、一个接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿捏Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值