java中的interface的修饰符可以是为什么不可以是p...8
发布网友
发布时间:2024-02-26 02:48
我来回答
共5个回答
热心网友
时间:2024-03-20 03:43
java中的interface的修饰符不能是protected,这违反了设计的原则,接口本身就应该对外界开放的:
接口中的方法默认的都是public的,这是接口的一种规范
public的才能被实现
接口中定义的字段也只会是static final的
网上有人打了个比方:
接口是用来定义一种(对象之间的)交互规范的,当然必须是public的。打个比方。你说我要修一个房子,就订一个规则,在房子左边必须有一个小门,用来送垃圾出去。收垃圾的人就知道了该从这个门进来收垃圾。可是你不告诉大家这个门是用来送垃圾的,收垃圾的人就不会知道。
热心网友
时间:2024-03-20 03:47
接口:接口定义的是一组方法或者一个公共接口,它必须通过类来实现。
接口的定义:
[attributes] [modifiers] interface identifier [:base-list] [;]
说明:
1、attributes(可选):附加的定义性信息。
2、modifiers(可选): 允许使用的修饰符有 new 和四个访问修饰符。分别是:new、public、protected、internal、 private。在一个接口定义中同一修饰符不允许出现多次,new 修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员。The public, protected, internal, and private 修饰符定义了对接口的访问权限。
3、指示器和事件。
4、identifier:接口名称。
5、base-list(可选):包含一个或多个显式基接口的列表,接口间由逗号分隔。
6、interface-body:对接口成员的定义。
7、接口可以是命名空间或类的成员,并且可以包含下列成员的签名: 方法、属性、索引器 。
8、一个接口可从一个或多个基接口继承。
接口这个概念在C#和Java中非常相似。接口的关键词是interface,一个接口可以扩展一个或者多个其他接口。按照惯例,接口的名字以大写字母"I"开头。下面的代码是C#接口的一个例子,它与Java中的接口完全一样:
热心网友
时间:2024-03-20 03:49
首先interface是定义的规范,是用于调用者和被调用者交互的。你写个protected修饰,对于调用者完全是画蛇添足。而对于实现者来说有protected仅仅是强制约束了必须有这个方法,如果出现了互相调用明显违反了基本原则。
你疑惑的场景应该是这种:com.a.b里有A接口和B辅助类,你想把某个方法只给B,不抛给外部,于是就想到了protected。这种想法是错的,因为你用的是protected可被同包访问,完全违背了protected的原有意义,你可以考虑使用其他策略,如:代理、单独接口,可能不是那么完美,但规范没法妥协,不然就乱了
热心网友
时间:2024-03-20 03:51
protected 修饰的类或方法表示其子类不能访问和调用,你又用interface修饰,
interface后的类肯定是要被子类实现的,儿子类又不能用,这不是自相矛盾吗?
热心网友
时间:2024-03-20 03:44
你既然定义了interface(接口),那肯定是要其它的类去实现它的,不然你定义它干吗,所以不能用protected去修饰,而要用public去修饰。接口可以去继承一个已有的接口。