java权限修饰符

java权限修饰符

又叫下面这个名称

访问控制修饰符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

  • default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

  • public : 对所有类可见。使用对象:类、接口、变量、方法

  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

我们可以通过以下表来说明访问权限:

访问控制
修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y Y/N(说明) N
default Y Y Y N N
private Y N N N N

 

defalult:大部分可能有点蒙,下面再简单介绍下

默认访问修饰符-不使用任何关键字

使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。

如下例所示,变量和方法的声明可以不使用任何修饰符。

实例

String version = “1.5.1”;

boolean processOrder() {

return true;

}

此外还要注意:

Java 程序的 main() 方法必须设置成公有的,否则,Java 解释器将不能运行该类

 

 

受保护的访问修饰符-protected

protected 需要从以下两个点来分析说明:

  • 子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;

  • 子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。

protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)。

接口及接口的成员变量和成员方法不能声明为 protected。 可以看看下图演示:

java权限修饰符

子类能访问 protected 修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。

下面的父类使用了 protected 访问修饰符,子类重写了父类的 openSpeaker() 方法。

class AudioPlayer { protected boolean openSpeaker(Speaker sp) { // 实现细节 } } class StreamingAudioPlayer extends AudioPlayer { protected boolean openSpeaker(Speaker sp) { // 实现细节 } }

如果把 openSpeaker() 方法声明为 private,那么除了 AudioPlayer 之外的类将不能访问该方法。

如果把 openSpeaker() 声明为 public,那么所有的类都能够访问该方法。

如果我们只想让该方法对其所在类的子类可见,则将该方法声明为 protected。

 

protected 是最难理解的一种 Java 类成员访问权限修饰词,更多详细内容请查看 Java protected 关键字详解。

https://www.runoob.com/w3cnote/java-protected-keyword-detailed-explanation.html

访问控制和继承

请注意以下方法继承的规则:

  • 父类中声明为 public 的方法在子类中也必须为 public。

  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。

  • 父类中声明为 private 的方法,不能够被继承。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114824.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • oracle 中decode函数[通俗易懂]

    oracle 中decode函数[通俗易懂]Oracle中decode函数用法含义解释:decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)该函数的含义如下:IF条件=值1THEN    RETURN(翻译值1)ELSIF条件=值2THEN    RETURN(翻译值2)    …ELSIF条件=值nTHEN    RETURN(翻译值n)ELSE    RETURN(缺省…

    2022年7月25日
  • Ubuntu18.04显卡驱动及CUDA卸载

    Ubuntu18.04显卡驱动及CUDA卸载背景故事上文提到显卡驱动和CUDA的安装,你们真的因为一切这么流畅么?当然不是,不然我也不会说是“踩坑”之旅了,因为驱动下错了,就搞了半天,这里记录一下如何卸载驱动和CUDA。卸载步骤卸载显卡驱动$sudoapt-get–purgeremovenvidia*$sudoaptautoremove卸载CUDA$sudoapt-get–purgeremove”*cublas*””cuda*”OK完成,可以重装了。ps.此时重启可能导致图形操作界面无法打开。

    2022年9月5日
  • MySQL百分比显示和显示前百分之几的方法

    MySQL百分比显示和显示前百分之几的方法1)查询所有时间内,所有产品销售金额占比,按占比大小降序排序,筛选累计占比在前80%的产品,结果输出排名产品名称销售金额占比累计占比。2)查询所有时间内,各个国家的销售情况,销售合计金额大于10000视为业绩合格,否则为不合格,结果输出国家销售金额业绩情况。3)查询中国、英国每个月份的销售情况,2020年8月份销售合计金额大于10000视为业绩合格,否则为不合格,2020年9月份销售合计金额大于12000视为业绩合格,否则为不合格,结果输出月份中国销售业绩、英国销售业绩。

    2022年7月27日
  • git commit后_git回退已经push的代码

    git commit后_git回退已经push的代码Git 返回 commit 内容

    2022年4月21日
  • 推荐一个好的Redis GUI 客户端工具

    推荐一个好的Redis GUI 客户端工具

    2021年11月4日
  • QXDM操作应用_飞机QDM

    QXDM操作应用_飞机QDMQXDM(TheQUALCOMMExtensibleDiagnosticMonitor)是高通公司(Qualcomm)公司发布的可以对手机终端所发数据进行跟踪有效工具,通过对数据的分析可以诊断信令流程、分析数据包的正确与否等。在测试中有重要作用,正确合理的使用可以为我们测试提供便捷的定位手段。QXDM是利用QPSTServer(Section3.3.1.1),通过USB延长线或…

    2022年10月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号