黑马程序员技术交流社区

标题: 编译出错,正在尝试分配更低的访问权限? [打印本页]

作者: 焚雨成灰    时间: 2014-3-14 19:27
标题: 编译出错,正在尝试分配更低的访问权限?
本帖最后由 焚雨成灰 于 2014-3-14 20:17 编辑

这个是毕老师视频中的一道题,代码如下:
interface Inter
{
        void method();
}
class Test
{
        //不足代码,通过匿名内部类
        static Inter function()
        {
                return new Inter()
                {
                        public void method() //当时我自己写,此处未加public,编译出错:正在尝试分配更低的访问权限,以前为public,这个错误什么意思
                        {
                                System.out.println("haha");
                        }
                };
        }
}
class  InnerClassTest
{
        public static void main(String[] args)
        {
                Test.function().method();
        }
}



作者: 张贺    时间: 2014-3-14 20:13
因为Method方法,并不是你定义的,而是Inter接口提供的,你设计的这个匿名类,相当于Inter接口的一个实现类,你必须实现接口中提供的方法。实现的时候方法的签名保持一致,接口中默认的访问控制符都是public只是没加。
作者: 焚雨成灰    时间: 2014-3-14 20:17
张贺 发表于 2014-3-14 20:13
因为Method方法,并不是你定义的,而是Inter接口提供的,你设计的这个匿名类,相当于Inter接口的一个实现类 ...

希望版主给你加分:D
作者: 张贺    时间: 2014-3-14 20:22
焚雨成灰 发表于 2014-3-14 20:17
希望版主给你加分

我也希望加,看好多人的技术分特别高,弄了好久也才9分,你是已经进去了还是?:(
作者: 焚雨成灰    时间: 2014-3-14 20:33
张贺 发表于 2014-3-14 20:22
我也希望加,看好多人的技术分特别高,弄了好久也才9分,你是已经进去了还是? ...

和你一样啊,这个分好像很难弄啊:D看版主心情吧
作者: 谜燕    时间: 2014-3-14 20:42
接口的默认访问级别为public,对于继承他的子类,访问权限不能比接口的访问权限小,也就是要大于等于,最高权限就是public,不能再比他高了,所以只能是public。
作者: 张贺    时间: 2014-3-14 20:42
焚雨成灰 发表于 2014-3-14 20:33
和你一样啊,这个分好像很难弄啊看版主心情吧

论坛里面可以聊天吗?不能的话,加QQ聊吧2667468966:lol




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