为什么接口中的方法不可以声明为protected或默认?
书上说,即使不写public,接口中的方法也是public的,那么为什么不允许把接口中的方法声明为protected或者默认呢?
假设接口中的方法允许被声明为默认,那么只有这个接口所在包内的,并且实现该接口的类,可以调用这个方法,
假设接口中的方法允许被声明为protected,那么只有这个接口所在包内的,并且实现该接口的类,以及这些类的子类可以调用这个接口中的方法
这两个假设从理论上也是说的通的啊,为什么实际不是这种情况呢?
------解决方案--------------------这可能是SUN内部的规定。呵呵。。。。。。
------解决方案--------------------请问如果接口是protect和private的,怎么使用它的多态,何况接口都是为了代码可以扩展用的,为什么还要缩小它的作用范围?(其实因为前面那个原因,后面那句根本就是废话)
------解决方案--------------------同意楼上的回答,使用接口主要就是要应用它的多态嘛,那多灵活啊。
------解决方案--------------------接口都是对外开放的呀,当然要public,楼主是想要接口只供某个包使用?那直接用抽象类吧
------解决方案--------------------
------解决方案--------------------接口默认是 公有的,因为 接口没有必要去隐蔽, 接口就是给别人实现,给别人是使用的。
所以规定不可以用其他的方式去访问。
------解决方案--------------------保护了,其他实现它的接口能用吗!那不就是留给自己了!还不如公开!
------解决方案--------------------接口就一定是public的,Sun就是这么规定的,也没必要一定说它怎样合理,将就用吧。
就象楼上有这么说的:
接口都是对外开放的呀,当然要public
你也这样理解:
接口是public的,所以只能对外公开。
------解决方案--------------------LZ需要好好看看关于接口这一块了,接口定义后是要去让其它类实现了,这才弥补了单继承的问题,如果是默认的话(private)或是protected的帽接口则会变得毫无意义,其实这些东西书上都做了很明确的阐述,只是LZ不用心而已
------解决方案--------------------默认不是private,是default,有些书说是friendly
------解决方案--------------------这样做就缩小了接口的使用范围
------解决方案-------------------- 接口没规定是public的啊,也可以是缺省的package
但在项目中一般是public的,这跟编程开闭原则有关,编程到接口。
------解决方案--------------------
------解决方案-------------------- 对,
接口是一套公共的规范。
所以要public。
楼主很注意思考~~
------解决方案--------------------接口,就是定位了一堆规范,让别人去实现的。
所以他是public 的·
楼上的总结的很好,以后也要好好回帖总结·
------解决方案--------------------接口本来就是要去别的类去实现的
你把方法弄成private 别的类不都哭了?