文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java基础分享,一篇文章说透Java访问修饰符

2024-12-02 16:47

关注

Java中有四种访问修饰符:private、default(无相应保留字)、protected和public。

今天,就让我们来了解一下这四种访问修饰符合元素的访问限制吧!

从强到弱依次是private、default、protected和public。

2. 访问修饰符介绍

java中有四种访问修饰符:private、default(无相应保留字)、protected和public。其含义如下:

四种访问修饰符合元素的访问限制,从强到弱依次是private、default、protected、public。如果类A和类B的访问修饰符是public,当类A中的一个方法想要调用类B中的一个方法时,可以根据下图确定可访问性: 

 

3. 以下示例说明四种修饰符对元素的访问限制

3.1 private

类B中的方法要调用同包下A的private方法,编译时会报错: 

  1. package p1 
  2.  
  3. class A { 
  4.     private String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8.     public void display(){ 
  9.         System.out.println(this.getName()); 
  10.     } 
  11.  
  12. package p1 
  13.  
  14. class B{ 
  15.     public void display(){ 
  16.         A a = new A(); 
  17.         System.out.println(a.getName()); 
  18.     } 

3.2 default

类C中的方法要调用不同包下类A的default方法,编译时会报错: 

  1. package p1 
  2.  
  3. public class A { 
  4.     String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8. package p1 
  9.  
  10. public class B{ 
  11.     public void display(){ 
  12.         A a = new A(); 
  13.         System.out.println(a.getName()); 
  14.     } 
  15.  
  16. package p2 
  17.  
  18. public class C { 
  19.     public void display(){ 
  20.         A a = new A(); 
  21.         System.out.println(a.getName()); 
  22.     } 

3.3 protected

类C中的方法要调用类A的protected方法,编译时会报错: 

  1. package p1 
  2.  
  3. public class A { 
  4.     protected String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8. package p2 
  9.  
  10. public class B extends A { 
  11.     public void display(){ 
  12.         System.out.println(super.getName()); 
  13.     } 
  14.  
  15. package p2 
  16.  
  17. public class C { 
  18.     public void display(){ 
  19.         A a = new A(); 
  20.         System.out.println(a.getName()); 
  21.     } 

3.4 public

无访问限制。 

  1. package p1 
  2.  
  3. public class A { 
  4.     public String getName(){ 
  5.         return "jim"
  6.     } 
  7.  
  8. package p2 
  9.  
  10. public class B { 
  11.     public void display(){ 
  12.         A a = new A(); 
  13.         System.out.println(a.getName()); 
  14.     } 

4. 当子类隐藏(hide)或覆盖(override)父类方法时,对访问修饰符的限制

当子类中的方法隐藏/覆盖父类中的方法时,与父类中相应方法的访问修饰符相比,子类方法的访问修饰符的访问限制应相同或更弱。这是面向对象的基本原则,即子类应该比父类更完美,因此子类的可访问性应该更强。

举例如下: 

  1. class Father { 
  2.  
  3.     protected static void staticMethod() { 
  4.  
  5.     } 
  6.  
  7.     public void method() { 
  8.  
  9.     } 
  10.  
  11. class Son extends Father { 
  12.  
  13.     static void staticMethod() { 
  14.  
  15.     } 
  16.  
  17.     protected void method() { 
  18.  
  19.     } 

5. 元素支持的访问修饰符。

每个元素(如类别、接口、注释、结构函数、成员变量、成员方法等)都会显示或隐示访问修改符,但并不是每个元素都支持四个访问修改符: 

来源:今日头条内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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