内部接口
今天 看源码的时候,发现有的类中的接口内部还有嵌套的接口,于是百度了一下,进行了详细的了解。
定义:内部接口,说白了就是一个普通接口的内部还嵌套这接口。
接口中嵌套接口
接下来我们看这个小案例:
//内部接口的使用
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("今天的天气真好");
}
}运行结果:今天的天气真好
总结:在所有的成结构之中,嵌套的程序结构永远都可以随处进行定义。