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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 焚雨成灰 于 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();
        }
}


6 个回复

倒序浏览
因为Method方法,并不是你定义的,而是Inter接口提供的,你设计的这个匿名类,相当于Inter接口的一个实现类,你必须实现接口中提供的方法。实现的时候方法的签名保持一致,接口中默认的访问控制符都是public只是没加。
回复 使用道具 举报
张贺 发表于 2014-3-14 20:13
因为Method方法,并不是你定义的,而是Inter接口提供的,你设计的这个匿名类,相当于Inter接口的一个实现类 ...

希望版主给你加分:D
回复 使用道具 举报

我也希望加,看好多人的技术分特别高,弄了好久也才9分,你是已经进去了还是?:(
回复 使用道具 举报
张贺 发表于 2014-3-14 20:22
我也希望加,看好多人的技术分特别高,弄了好久也才9分,你是已经进去了还是? ...

和你一样啊,这个分好像很难弄啊:D看版主心情吧
回复 使用道具 举报
接口的默认访问级别为public,对于继承他的子类,访问权限不能比接口的访问权限小,也就是要大于等于,最高权限就是public,不能再比他高了,所以只能是public。
回复 使用道具 举报
张贺 中级黑马 2014-3-14 20:42:23
7#
焚雨成灰 发表于 2014-3-14 20:33
和你一样啊,这个分好像很难弄啊看版主心情吧

论坛里面可以聊天吗?不能的话,加QQ聊吧2667468966:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马