武器数据档案馆

内部接口

今天 看源码的时候,发现有的类中的接口内部还有嵌套的接口,于是百度了一下,进行了详细的了解。

定义:内部接口,说白了就是一个普通接口的内部还嵌套这接口。

接口中嵌套接口

接下来我们看这个小案例:

//内部接口的使用

public interface IMessage {

public void send(String msg);

//java 内部接口

interface Iconnect{

public boolean build();

}

}

public class MessageImpl implements IMessage {

//由此我们可以看出,内部接口不一定非要实现

@Override

public void send(String msg) {

System.out.println(msg);

}

}

public class TestDemo {

public static void main(String[] args) {

IMessage message = new MessageImpl();

message.send("今天的天气真好!");

}

}//能够正常运行,运行结果:今天的天气真好!

嵌套的接口怎样使用

如果我们想要实现我们的内部接口,那么应该怎样操作呢?

接着看:

public class MessageImpl implements IMessage {

//由此我们可以看出,内部接口不一定非要实现

@Override

public void send(String msg) {

System.out.println(msg);

}

//内部接口可以选择性的进行子类的实现

class ConnectImpl implements Iconnect {

@Override

public boolean build() {

return true;

}

}

}

public class TestDemo {

public static void main(String[] args) {

IMessage message = new MessageImpl();

message.send("今天的天气真好!");

IMessage.Iconnect iconnect=((MessageImpl)message).new ConnectImpl();//注意中间的转换过程。

System.out.println(iconnect.build());

}

}

运行结果:

今天的天气真好!

true

接口内部添加接口的实现类

我们还可以在接口内部添加接口的实现类

操作如下:

//内部接口的使用

public interface IMessage {

public void send(String msg);

public class MessageImpl implements IMessage{

@Override

public void send(String msg) {

System.out.println(msg);

}

}

public static IMessage getInstance(){

return new MessageImpl();

}

}

public class TestDemo {

public static void main(String[] args) {

IMessage instance = IMessage.getInstance();

instance.send("今天的天气真好");

}

}运行结果:今天的天气真好

接口中定义抽象类:

//内部接口的使用

public interface IMessage {

public void send(String msg);

public abstract class AbsConnect{

public abstract boolean build();

}

}

public class MessageImpl implements IMessage {

//由此我们可以看出,内部接口不一定非要实现

private class ConnectImpl extends AbsConnect{

@Override

public boolean build() {

return true;

}

}

@Override

public void send(String msg) {

AbsConnect connect = new ConnectImpl();

if(connect.build()){

System.out.println(msg);

}

}

}

public class TestDemo {

public static void main(String[] args) {

IMessage instance = new MessageImpl();

instance.send("今天的天气真好");

}

}运行结果:今天的天气真好

总结:在所有的结构之中,嵌套的程序结构永远都可以随处进行定义。