一、接口的声明和接口体:
1、接口使用关键字interface来定义,格式为:interface 接口的名字
接口体中包含常量(没有变量)的声明和抽象方法两部分。
接口体中只有抽象方法,而且接口体中所有的常量的访问权限一定都是public,而且是static常量
二、实现接口:
1、接口由类来实现以便使用接口中的方法,一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口
2、如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中所有的方法
三、接口回调:
1、可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被该类实现的接口方法。实际上,当接口变量调用被类实现的接口方法时,就是通知相应的对象调用这个方法
2、实例:
package 接口回调;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ShowMessage sm;//声明一个接口变量
sm=new TV();//接口变量中存放对象引用
sm.显示商标("小羊的电视机");//接口回调
sm=new PC();
sm.显示商标("小羊的电脑");
}
}
interface ShowMessage{
void 显示商标(String s);
}
class TV implements ShowMessage{
public void 显示商标 (String s) {
System.out.println(s);
}
}
class PC implements ShowMessage{
public void 显示商标 (String s) {
System.out.println(s);
}
}
四、接口与多态
1、有接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方法时就可能具有多种形态
接口参数
1、如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口参数,那么接口参数就可以回调类实现的接口方法
2、实例:
package 接口参数;
interface SpeakHello{
void speakHello();
}
class Chinese implements SpeakHello{
public void speakHello() {
System.out.println("你好!");
}
}
class English implements SpeakHello{
public void speakHello() {
System.out.println("Hello!");
}
}
class KindHello{
public void lookHello(SpeakHello hello) {//接口类型的参数
hello.speakHello();//接口回调
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
KindHello kindHello=new KindHello();
kindHello.lookHello(new Chinese());
kindHello.lookHello(new English());
}
}