首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为什么接口中的方法不可以声明为protected或默认?解决方法

2012-02-21 
为什么接口中的方法不可以声明为protected或默认?书上说,即使不写public,接口中的方法也是public的,那么为

为什么接口中的方法不可以声明为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 别的类不都哭了?

热点排行