A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘廖明 中级黑马   /  2013-4-16 01:58  /  1444 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘廖明 于 2013-4-17 22:49 编辑

接口里是否能定义内部类?如果可以举个使用的场景的例子?

6 个回复

倒序浏览
可以  接口里的内部类是接口的成员。
是默认使用public static 修饰的,接口的内部类只能是静态内部类
但是这样定义没有任何意义,因为接口本身就是定义一个公共规范,是暴露出去给人使用的
如果在其中定义了内部类,意义何在?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
这是可以的,最现成最简单的例子就是Map集合的内部接口Map.Entry<K,V>,如果你要定义内部类,其实是一样的到来,就像楼上说的一样。但是定义内部类还不如定义内部接口比较好,因为接口更容易扩展。
回复 使用道具 举报
1.首先可以定义,接口本身就是一个抽象类,定义一个类自然就是内部类
2.确实没必要这么干。接口中本来就只是一个标签,你定义一个内部类想实现什么功能?
我经过测试发现 在接口里面定义的一个类 ,然后类中的方法可以不是抽象的,也就是可以实现的
package com.itcast.ztr;

public class MainClass {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Test.A a=new Test.A();
                a.t();
        }

}


package com.itcast.ztr;

public interface Test {
         
                class A{
                        public void t(){
                                System.out.println("asa");
                        }
                       
                }
}


你可以试一试

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
接口能够定义内部类。内部类可以直接访问外部类的成员,
但是接口中的成员都有固定的修饰符public static,接口是对外开放的方法。
所以,没有意义。
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
Sword 金牌黑马 2013-4-17 10:27:36
7#
学习了,不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马