ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

内部接口

2022-01-18 11:01:39  阅读:161  来源: 互联网

标签:内部 void 接口 IMessage send public String


内部接口

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

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

接口中嵌套接口

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

//内部接口的使用
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("今天的天气真好");

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

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

标签:内部,void,接口,IMessage,send,public,String
来源: https://www.cnblogs.com/dongyaotou/p/15816808.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有