接口 接口与抽象类区别

tech2022-07-16  137

接口

概念

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

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

语法

关键字 interface

public interface 接口名{}

public interface MyInterface{ }

特点

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

接口实现

接口的规范

任何类在实现接口时,必须实习接口中所有的抽象方法,否则此类为抽象类实现接口中的抽象方法时,访问修饰符必须是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

常量接口

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

接口回调

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

实现流程

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

接口的好处

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

接口vs抽象类

相同

不能创建对象可作为引用类型(即类似于 Animal animal = new Dog())可编译为字节码文件具备Object类中所定义的方法都可拥有抽象方法

不同

接口中所有属性都是公开静态常量,隐式使用public static final修饰

抽象类中有普通属性

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

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

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

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

最新回复(0)