一、接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

1、举个栗子:

手机可以拍照、上网、打游戏、打电话相机可以拍照,

电脑可以上网, 玩游戏,

智能手表可以打电话.

1、他们之间不能抽取具有公共特征的父类, 如果没有接口,需要创建一个手机电脑类, 手表类, 相机类, 在每个类中增加相应的功能等等。

2、他们当中很多类中有相同行为能力的, 我们可以根据他们的行为能力来关联, 就是java 中的接口.

2、接口与类的区别:

接口不能用于实例化对象。

接口没有构造方法。

接口中所有的方法必须是抽象方法。

接口不能包含成员变量,除了 static 和 final 变量。

接口不是被类继承了,而是要被类实现。

接口支持多继承。

接口Please enable JavaScript and refresh the page_父类

二、接口的实现

声明接口:上网接口

//接口访问修饰符:public 默认
public interfaceINet {//访问修饰符默认public//接口中抽象方法可以不写abstract关键字//当类实现接口时,需要去实现接口中的所有抽象方法,否则需要将该类设置为抽象类
public voidnetwork();//接口中可以包含常量,默认public static final
int TEMP=30;
}

实现类:手机可以上网

//可以实现多个接口
public class FourthPhone implementsIPhoto,INet{public voidnetwork() {
System.out.println("手机可以上网");
}
}

测试类

public classTest {public static voidmain(String[] args) {
INet one= newFourthPhone();
one.network();
}
}

三、接口的默认方法&静态方法

public interfaceINet {//default:默认方法 可以带方法体 jdk1.8后新增//可以在实现类中重写,并可以通过接口的引用调用
default voidconnection(){
System.out.println("我是接口中的默认链接");
}//static:静态方法 可以带方法体 jdk1.8后新增//不可以在实现类中重写,可以同接口名调用
static voidstop(){
System.out.println("我是接口中的静态方法");
}
}

四、接口的继承

五、问题解决

1.多接口重名同名方法

在继承接口的方法中会报错

【解决】在继承接口的方法中,【重写】一个自己的同名默认方法

2.父类与继承接口中重名其中的方法

【默认】指向【父类当中】的重名方法若自己重写一个自己的重名方法 , 【指向子类的重写方法】

3.多接口重重名常量处理的解决方案

在一个类内,如果指定是若干个接口,而这若干个接口之间有同名的变量的时候,在此类中调用接口中含有同名的变量的时候也会报错。

在上述的例子中,如果该类有继承关系的父类当中也含有与接口同名的变量,则同样会报错。

解决此类办法的途径就是在该类中显式的定一个该同名的变量,以消除这种错误。