黑马程序员技术交流社区

标题: 关于一个接口与内部类问题? [打印本页]

作者: 潘廖明    时间: 2013-4-16 01:58
标题: 关于一个接口与内部类问题?
本帖最后由 潘廖明 于 2013-4-17 22:49 编辑

接口里是否能定义内部类?如果可以举个使用的场景的例子?
作者: 陈宇鹏    时间: 2013-4-16 12:02
可以  接口里的内部类是接口的成员。
是默认使用public static 修饰的,接口的内部类只能是静态内部类
但是这样定义没有任何意义,因为接口本身就是定义一个公共规范,是暴露出去给人使用的
如果在其中定义了内部类,意义何在?
作者: 黄玉昆    时间: 2013-4-16 12:34
这是可以的,最现成最简单的例子就是Map集合的内部接口Map.Entry<K,V>,如果你要定义内部类,其实是一样的到来,就像楼上说的一样。但是定义内部类还不如定义内部接口比较好,因为接口更容易扩展。
作者: 偏執旳、靑春    时间: 2013-4-16 13:01
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");
                        }
                       
                }
}


你可以试一试
作者: 庄生晓梦    时间: 2013-4-16 19:54
接口能够定义内部类。内部类可以直接访问外部类的成员,
但是接口中的成员都有固定的修饰符public static,接口是对外开放的方法。
所以,没有意义。
作者: 黄玉昆    时间: 2013-4-17 09:00
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
作者: Sword    时间: 2013-4-17 10:27
学习了,不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2