接口 接口与抽象类区别

接口

概念

类似一种特殊的抽象类,是一种标准、一种能力、一种约束

Java为单继承 当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力

语法

关键字 interface

public interface 接口名{}

public interface MyInterface{
    
}

特点

  1. 接口不能实例化
  2. 接口不能有构造方法
  3. 接口中的变量是默认为静态的常量
  4. 接口中的方法是默认为公开的抽象
  5. 接口支持多实现,可为类扩充多种能力

接口实现

接口的规范
  • 任何类在实现接口时,必须实习接口中所有的抽象方法,否则此类为抽象类
  • 实现接口中的抽象方法时,访问修饰符必须是public
接口引用
  • 同继承中父类一样,接口也可以声明为引用,并指向实现类对象
  • 注意:
    • 仅可调用接口中声明的方法,不可调用实现类中独特方法
    • 可强转回实现类本身类型,进行独有方法调用
实现类规范

命名

  • ​ I+接口名
  • ​ 接口名+Impl

包:一般创建在接口所在的包的子包 名称为 impl

语法:

//单实现
public class Impl1 implements Interface{
    
}

//多实现
public class Impl1 implements Interface,Interface2,...{
    
}

接口的多态

多种不同类型的引用指向同一个对象时,表示看待对象的视角不同

不同的引用所能看到的对象范围不同,只能调用自身类型中所声明的部分

例如:Runnable r = new Dog()把狗看成会跑的东西

在这里插入图片描述

常见关系

类与类
  • 单继承
  • extends 父类名称
类与接口
  • 多实现
  • implements 接口1,接口2,接口n
接口与接口
  • 多继承
  • extends 父接口1,父接口2,父接口n

常量接口

将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性

接口回调

先有接口的使用者,后有接口的实现者

实现流程
  1. 声明接口引用
  2. 使用时将符合接口标准的实例去赋值声明的接口
  3. 设置一个通知的方法
  4. 通知方法里,用声明的接口引用名去调用接口中的方法
  5. 根据实际的情况,通过使用者去运行这个调用

接口的好处

  • 降低程序的耦合度
  • 更自然的使用多态
  • 设计与实现分离
  • 更容易搭建程序框架
  • 更容易更换具体实现

接口vs抽象类

相同
  • 不能创建对象
  • 可作为引用类型(即类似于 Animal animal = new Dog())
  • 可编译为字节码文件
  • 具备Object类中所定义的方法
  • 都可拥有抽象方法
不同
  • 接口中所有属性都是公开静态常量,隐式使用public static final修饰

    抽象类中有普通属性

  • 接口中的方法都是公开抽象方法,隐式使用public abstract 修饰

    抽象类中有抽象方法、也有普通方法

  • 接口中没有构造方法、动态代码块、静态代码块

    抽象类中可以有构造方法、动态代码块、静态代码块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值