日期:2014-05-20  浏览次数:20765 次

为什么接口中的方法不可以声明为protected或默认?
书上说,即使不写public,接口中的方法也是public的,那么为什么不允许把接口中的方法声明为protected或者默认呢?
假设接口中的方法允许被声明为默认,那么只有这个接口所在包内的,并且实现该接口的类,可以调用这个方法,
假设接口中的方法允许被声明为protected,那么只有这个接口所在包内的,并且实现该接口的类,以及这些类的子类可以调用这个接口中的方法
这两个假设从理论上也是说的通的啊,为什么实际不是这种情况呢?

------解决方案--------------------
这可能是SUN内部的规定。呵呵。。。。。。
------解决方案--------------------
请问如果接口是protect和private的,怎么使用它的多态,何况接口都是为了代码可以扩展用的,为什么还要缩小它的作用范围?(其实因为前面那个原因,后面那句根本就是废话)
------解决方案--------------------
同意楼上的回答,使用接口主要就是要应用它的多态嘛,那多灵活啊。
------解决方案--------------------
接口都是对外开放的呀,当然要public,楼主是想要接口只供某个包使用?那直接用抽象类吧
------解决方案--------------------
探讨
接口都是对外开放的呀,当然要public,楼主是想要接口只供某个包使用?那直接用抽象类吧

------解决方案--------------------
接口默认是 公有的,因为 接口没有必要去隐蔽, 接口就是给别人实现,给别人是使用的。
所以规定不可以用其他的方式去访问。
------解决方案--------------------
保护了,其他实现它的接口能用吗!那不就是留给自己了!还不如公开!
------解决方案--------------------
接口就一定是public的,Sun就是这么规定的,也没必要一定说它怎样合理,将就用吧。

就象楼上有这么说的:
接口都是对外开放的呀,当然要public

你也这样理解:
接口是public的,所以只能对外公开。


------解决方案--------------------
LZ需要好好看看关于接口这一块了,接口定义后是要去让其它类实现了,这才弥补了单继承的问题,如果是默认的话(private)或是protected的帽接口则会变得毫无意义,其实这些东西书上都做了很明确的阐述,只是LZ不用心而已
------解决方案--------------------
默认不是private,是default,有些书说是friendly
------解决方案--------------------
这样做就缩小了接口的使用范围
------解决方案--------------------
接口没规定是public的啊,也可以是缺省的package
但在项目中一般是public的,这跟编程开闭原则有关,编程到接口。
 
------解决方案--------------------
探讨
接口就一定是public的,Sun就是这么规定的,也没必要一定说它怎样合理,将就用吧。

就象楼上有这么说的:
接口都是对外开放的呀,当然要public

你也这样理解:
接口是public的,所以只能对外公开。


------解决方案--------------------
对,
 接口是一套公共的规范。
 所以要public。
 楼主很注意思考~~
------解决方案--------------------
接口,就是定位了一堆规范,让别人去实现的。
所以他是public 的·
楼上的总结的很好,以后也要好好回帖总结·
------解决方案--------------------
接口本来就是要去别的类去实现的
你把方法弄成private 别的类不都哭了?