文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java访问权限之 protected 修饰符

2023-10-25 16:22

关注

摘要

        在Java中,使用访问权限修饰符来保护对类、变量、方法和构造方法的访问,这类修饰符分别是public,protected,default,以及private。由于很多Java书籍对protected可见性的介绍都比较笼统,本文重点说明protected的权限

一、Java权限访问修饰符

各访问修饰符权限如下:

同一个类中同一个包内不同包的子类不同包的其他类
public
protected✔*
default
private

在上面所提到的四种修饰词中,除 protected 外都很好理解和掌握,在此略作简述:

二、protected关键字的可见性

    很多介绍Java语言的书籍(比如《Java编程思想》)都对protected做了介绍,但是描述的比较简单,基本都是一句话“被protected修饰的成员对于本包和其子类可见”。这种说法有点太过含糊,常常会对大家造成误解。实际上,protected的可见性在于以下几点:


接下来我们通过下面几个关于protected方法可见性的例子进行详细解释protected关键字:

示例一:

package p1;public class Father1 {    protected void f() {} // 父类Father1中的protected方法}package p1;public class Son1 extends Father1 {}package p11;public class Son11 extends Father1{}package p1;public class Test1 {    public static void main(String[] args) {        Son1 son1 = new Son1();        son1.f(); // Compile OK ----(1)        son1.clone(); // Compile Error ----(2)        Son11 son = new Son11();            son11.f(); // Compile OK ----(3)        son11.clone(); // Compile Error ----(4)    }}

示例二:

package p2;public class Father2 {    protected Object clone() throws CloneNotSupportedException{        return super.clone();    }}package p22;import p2.Father2;public class Son2 extends Father2 {    public static void main(String args[]) throws CloneNotSupportedException {        Father2 f2 = new Father2();        f2.clone(); // Compile Error ----(1)        Son2 son2 = new Son2();        son2.clone(); // Complie OK ----(2)    }}

示例三:

package p3;import p33.Son3;public class Father3 {    public static void main(String[] argv) throws CloneNotSupportedException {        Son3 son3 = new Son3();        son3.clone();  // Compile OK ------(1)    }}package p33;import p3.Father3;public class Son3 extends Father3 {}

示例四:

package p4;import p44.Son4;public class Father4 {    public static void main(String[] argv){        Son4 son4 = new Son4();        son4.clone();  // Compile Error -----(1)    }}package p44;import p4.Father4;public class Son4 extends Father4 {    protected Object clone() throws CloneNotSupportedException {        return super.clone();    }}

示例五:

package p5;public class Father5 {    protected Object clone() throws CloneNotSupportedException{        return super.clone();    }}package p5;public class Test5 {    public static void main(String[] args) throws CloneNotSupportedException {        Father5 f5 = new Father5();        f5.clone();  // Compile OK ----(1)    }}

示例六:

package p6;public class Father6 {    public static void main(String[] args) throws CloneNotSupportedException {        Son6 son6 = new Son6();        son6.clone();  // Compile OK -------(1)    }}class Son6 extends Father6{}

示例七:

package p7;public class Father7 {}class Son7 extends Father7{    public static void main(String[] args){        Father7 f7 = new Father7();        f7.clone();  // Compile Error ----- (1)    }}

三、引用

Java基础知识详解: protected修饰符

Java访问权限之 protected详解

Java protected 关键字详解

来源地址:https://blog.csdn.net/zhangx_developer/article/details/130421720

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯