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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Yaphets 中级黑马   /  2013-12-19 15:04  /  1249 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Main {
        public static void main(String[] args) {
                Some s=new SomeImpl();
                s.doSome();
        }
}
interface Some{
        protected  void doSome();
}
class SomeImpl implements Some{
        public void doSome(){
                System.out.println("做一些事");
        }       
}
这个 doSome();方法用的是protected修饰的,显示报错,。那为什么程序在eclipse里面运行可以输出“做一些事”?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

倒序浏览
可能是SomeImpl在实现接口的doSome();
方法权限是够的,只是 protected  void doSome();
这样写不规范,但能编译通过
回复 使用道具 举报
是不是这种情况eclipse里面运行时Some接口被重写了doSome()
回复 使用道具 举报
接口里面的方法默认public ,他是一点要被实现的,你使用protected修饰 这肯定是不行的,如果别的包想实现它也没法实现

对于eclipse输出适应为他调用的是对象里面被重写的方法
回复 使用道具 举报
接口里面的方法和常量默认的都是public的,你不加也是.接口就是为了扩展程序的功能用的,所以是public.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马