这是一个看似简单其实挺有深意的题目,答案应该大多数人都知道是什么,不过原理和原因相比很少有人仔细研究过。对于本题,我有三点说明,希望看到这个评论的人能从这三点中看到你以前没注意到的东西: 
①接口的声明,修饰符的使用和类的声明是一致的,(当前,前提类是外部类,不是所谓的内部类),都只能使用public或者什么都不写,默认权限(这里的默认权限不是default,可以理解为friendly,但是java没有这个关键字,但权限上可以理解为default),无论是private还是protected都是不可以的。 
②关于修饰符大小的说明:public>protected>默认>private,用一张表就是如下: 
③综合①②,问题出现了,为什么protected的权限比默认权限要高,但是却不能使用它修饰类或者接口呢?原因何在?本题评论如此之少,也没有人深入揭示问题所在,都只是说什么由于需要被其他包其他类实现,所以就是public,那么对于默认修饰符的存在你们怎么解释?我简单说明一下:首先,这里对于接口声明的默认修饰符,可不是像接口中的方法那样,不写修饰符就默认是public了,接口的声明不写修饰符就是default权限,只能同包的类可以访问,其他包是不行的,不信试试看。其次虽然protected权限要比默认权限高,但是对于类或者接口的声明却不能使用,可以简单这么理解:一个外部类或者接口,它的上一层结构是包,因此他们只有两个作用域:同包,任意位置。除此之外的权限没有任何意义,而基于此,public和默认权限就是足够的了,不需要使用protected这种多余的权限造成更为复杂的类关系,因此java限制了类或接口的声明,就仅限于public和默认。

转载于:https://www.cnblogs.com/sunyubin/p/9720691.html

在使用 interface 声明一个接口时,只可以使用那个修饰符修饰该接口?相关推荐

  1. Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法

    在之前的编程里,我还没有遇到过要在一个ListView中嵌套一个GridView或是在一个GridView中嵌套一个ListView.所以今天事儿来了!我花了一将近3个小时,找到了为什么我在一个Lis ...

  2. java语言中修饰一个常量_接口中定义一个常量所用的修饰符有: (5.0分)_学小易找答案...

    [判断题]Java中的接口不允许被继承 (5.0分) [单选题]下列程序的输出结果是( ) public class Ex_36{ public static void main(String arg ...

  3. php interface 抽象类,解析PHP中的抽象类(abstract class)和 接口(interface)

    有关PHP中抽象类与接口问题,有些人或许明白,有些人或许模糊,在此,小编给大家详细介绍一下有关两者的概念及功能,请大家一定要珍藏噢! 一.抽象类abstract class 1.抽象类是指在 clas ...

  4. JAVA面向对象OOP多态→抽象类abstract、接口interface实现implement、final不变修饰符、样例代码

    抽象类 抽象类-接口关系示意图 如果一个类实现接口,就要把接口中所有的抽象方法都重写. A接口继承另一个B接口时,类要重写AB两个接口的方法 如果只是实现部分接口,可以用抽象类实现. 抽象类与接口不同 ...

  5. 接口interface修饰符相关问题总结

    1.抽象类中的抽象方法(其前有abstract修饰)不能用private.static.synchronized.native访问修饰符修饰. 原因如下: 抽象方法没有方法体,是用来被继承的,所以不能 ...

  6. 升级至4K超高清12G-SDI接口时需要考虑的三件事

    升级至4K超高清12G-SDI接口时需要考虑的三件事 1. 传输接口:基于SDI或IP的视频(10G以太网) 2. 传输介质:同轴电缆还是光纤? 3. 传输速度:3G-SDI还是12G-SDI? 1. ...

  7. 最全Java各修饰符详解(接口、类、方法、变量)

    一.总述 类.方法.成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ - p ...

  8. 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda

    包 什么是包? 包是用来分门别类的管理各种不同类的,类似于文件夹.建包利于程序的管理和维护. 建包的语法格式:package 公司域名倒写.技术名称.报名建议全部英文小写,且具备意义. package ...

  9. Java基础(一) —— JDK安装、第一个Java程序、Java数据类型、修饰符、运算符、循环、条件

    Java基础(一) Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年 ...

最新文章

  1. 信息系统项目管理知识--项目成本管理
  2. Posix本地通信用于同一设备或native和framework层之间
  3. 使用javassist动态注入代码
  4. python新特性_Python3.6正式版新特性预览
  5. Python中re(正则表达式)模块学习
  6. 计算时间:一个运算符重载示例
  7. 敏捷开发免费管理工具——火星人预览之七:自定义字段
  8. MIPS单周期CPU设计——lw和sw指令的设计
  9. 0基础学软件测试好学吗?这2个硬性要求没有达到的话奉劝你不要学...
  10. Vue3二维码生成(简洁明了)
  11. Java网络 1.3 开发工具介绍
  12. 为什么画出的人物是平面,怎样才能画出有立体感的人物
  13. np.randon模块,numpy.random模块各函数功能详解,分类描述各个函数功能,生成随机数
  14. 【前端全家桶】 HTTP协议类
  15. telegram 新增 删除 联系人
  16. 向下取整floor()、向上取整ceil()、截取函数trunc()、四舍五入round()
  17. 如何做一个自己的开源聊天项目?(仿微信)
  18. 邀请码 inurl code.php,javascript-PHP注册邀请码
  19. VM虚拟机装机ubuntu之BUG和获取文件操作权限
  20. Oracle12C SGA PGA UGA

热门文章

  1. 如果你现在学Android---学习使用Kotlin进行Android开发
  2. iOS调试 LLDB使用
  3. swift_028(Swift 的协议)
  4. 长方形与圆最近连线LISP_常见图形,圆形、长方形和正方形面积的计算
  5. .NET Core webapi 允许put请求方式配置文件
  6. 2.aop中几个注解的含义
  7. 常见的音视频封装和编码
  8. 解决mantis不能上传附件问题
  9. 【android API】 ListView api 翻译
  10. Windows Phone 7 Tip (13) -- 如何搜集应用使用数据