接口:用interface定义接口
接口定义格式特点:
1、接口中常见定义:常量,抽象方法。
2、接口中的成员都有固定的修饰符。
常量:public static final
方法:public abstract
记住:接口中的成员都是public的,固定修饰符可以省略。
接口是不可以创建对象的,因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类类可以实例化。
否则子类是一个抽象类。
接口的特点:
1、接口是对外暴露的规则。
2、接口是程序的功能扩展。
3、接口可以用来多实现,降低了模块的耦合性。
4、类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
5、接口与接口之间可以有继承关系,也可以多继承。
首先创建接口:
interface JieKou{
public static final String COUNTRY = "CN";
public abstract void show();
void test();
}
interface JieKouOne {
int AGE = 21;
void test();
}
如上面所示,接口是用interface来定义;
声明的常量参数要大写;
并且接口中可以省略修饰词,常量参数可以省略public static final
方法可以省略public abstract,所以test方法也是抽象方法;
接口的实现:
关键字:implements;类似继承的写法,
接口的实现类中必须要复写所有的抽象方法,才可以创建对象。
class InterFaces implements JieKou,JieKouOne{
public void show(){
System.out.println("……show啊");
};
public void test(){
System.out.println("……测试");
};
}
从上面所示,实现接口要重新创建一个类,进而用关键字implements进行实现;
且接口中的抽象类都必须进行重写,不然报错;
接口可以多继承,因为接口中方法没有主体;
但继承的接口中不能存在方法名相同,返回类型不同的方法。
类可以继承类再实现接口;
interface JieKouTwo extends JieKou,JieKouOne{
public abstract void eat();
}
class InterFacess extends InterFaces implements JieKouOne{
public void test(){
System.out.println("测试……芝麻开门。收到,over!");
}
}
如上面所示:
接口可以继承接口,并且可以就行多继承;
之所以接口中的方法没有主体,因为接口中的方法都是抽象方法,抽象方法是没有主体的,需要继承该接口去重写这个抽象方法。
接口继承接口的同时还可以实现接口;
下面来演示接口的用法:
在主方法中进行调用;
public static void main(String[] args) {
JieKou inter = new InterFaces();
//接口创建对象要实例它的实现类。
//打印常量
//由于常量是static所修饰,可以直接被该类调用,也可以被该实现类调用,最次也可以被该接口创建的实例对象调用,//只不过没必要,多此一举,最佳就是前两者;
System.out.println(JieKou.COUNTRY);
System.out.println(InterFaces.COUNTRY);
System.out.println(inter.COUNTRY);
}
运行结果:
//调用方法
//方法的调用就需要用接口所实例出来的对象就行调用了
inter.show();
InterFacess inters = new InterFacess();
inters.test();
运行结果: