接口是莫?
接口(interface)是一种重要的实现运行时多态的方式,是一种协议,它规范了传入的对象所必须具备的某些特征,从而保证在调用时既不会发生错误又不需要提前检查。虽然继承(extends)也能起到相同的效果,但是很多场景下使用继承会导致逻辑关系混乱,不利于抽象。
接口(interface)是抽象方法和常量值的定义的集合。
从本质上讲,接口(interface)是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。实现接口类:
class classname(类名) implements Interface1(接口名){}
一个类可以实现多个接口,接口也可以继承其它接口。
接口(interface)是与类并行的概念
- 接口可以看出是一个特殊的抽象类。是常量与抽象方法的一个集合。不能包含变量、一般的方法。
- 接口是没有构造器(参考上一章博客)的。
- 接口定义的就是一种功能。此功能可以被类所实现(implenmets)。
比如:class 类名 extends 类名 implements 接口名 - 实现接口的类,必须要重写其中的所有抽象方法,方可实例化。若没有重写,则此类仍为一个抽象类
- java中类可以实现多个接口,而继承是单继承的。
- 接口与接口之间也是继承的关系,而且可以实现多继承。
接口格式:
public interface 接口名{
//定义常量
//定义抽象方法
}
//常量注意事项:
// public static final修饰可省略,注意:不写也照样表达这个意思。
// 接口当中的常量,必须进行赋值:不能不赋值。
// 接口中常量的名称,使用完全大写的字母,用下划线进行分隔。(推荐这种命名规则)
//抽象方法注意事项:
// 在接口中的抽象方法必须定义为 public 访问权限,这是绝对不可改变的
// 在接口中如果不写 public,则也是 public 访问权限
//因为很多的Java程序,经常可以看到编写接口方法时,省略了public,不管写不写接口中的方法都是public
接口的实现类格式:
public class 类名 implements 接口名{
//实现/重写接口的方法
//定义普通
}
接口的创建及使用
//接口的定义
interface Chen{
public static final String LANGUAGE = "Java"; //定义全局常量
public abstract void print(); //定义抽象方法
public abstract String getInfo(); //定义抽象方法
}
//上下两个接口定义的功能是一致的,下面是简化版
interface Chen{
String LANGUAGE = "Java"; //定义全局常量
void print(); //定义抽象方法
String getInfo(); //定义抽象方法
}
//与抽象类一样,接口若要使用也必须通过子类,子类通过 implements 关键字实现接口
//实现接口:
// class 子类 implements 接口A,接口B,...{}
interface Song{
String LANGUAGE = "Java";
void print();
void getInfo();
}
interface Chen{
void say();
}
class Yang implements Song,Chen{
public void say(){
System.out.println("覆写 Chen 接口中的抽象方法");
}
public void getInfo(){
System.out.println("覆写 Song 接口中的抽象方法");
}
public void print(){
System.out.println("覆写 Song 接口中的抽象方法");
}
}
public class Test{
public static void main(String[] args) {
Yang yang = new Yang();
yang.say();
yang.print();
}
}
使用接口的好处
- 扩展类的功能
- 接口实现了多重继承,实现类和任何实现接口子类的通信和交互
- 接口更灵活,开发中常用
今天的总结就到这里,如果总结有错,希望大佬指点,希望能够和诸位一同努力进步,努力学习。感谢大家的支持。