内部接口
内部接口
今天 看源码的时候,发现有的类中的接口内部还有嵌套的接口,于是百度了一下,进行了详细的了解。
定义:内部接口,说白了就是一个普通接口的内部还嵌套这接口。
接口中嵌套接口
接下来我们看这个小案例:
//内部接口的使用
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("今天的天气真好");
}
}运行结果:今天的天气真好
总结:在所有的结构之中,嵌套的程序结构永远都可以随处进行定义。
分类:
JAVA / java基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-01-18 下载单个jar包的网址
2020-01-18 微服务项目远程debug配置--idea版本
2020-01-18 VPN连接的两种方式