Java中访问修饰符public、private、protect、default范围

 

同一个类

同一个包

不同包的子类

不同包的非子类

Private

Default

Protected

Public

一、权限修饰符修饰外部类的包内包外情况分析:
1、首先能修饰外部类的权限修饰符只有public和default,为什么不能是private和protected呢?

这是因为:我们知道外部类中的成员(成员变量、成员方法、嵌套类等)的上层结构是类,而外部类的上层结构是包。

① 如果外部类使用private修饰,表明该包下的这个类被私有,无法被其它类访问,那就根本谈不上继承、多态这些的特征,因此该类也失去了存在的意义,所以不能使用private来修饰类。而且编译也通不过:Illegal modifier for the class XXX; only public, abstract & final are permitted,意思是:非法修饰符,只允许用 public, abstract,final来修饰外部类。

② 如果外部类使用protected修饰,表示该类所在的包的其它类可以访问该类;或该类所在的包的子包的类可以访问该类,但是包没有继承的概念,所以后一句是不对。所以用protected来修饰外部类也是没有意义的。

综上,类只有public和default修饰可以修饰外部类。

2、default修饰外部类,则该外部类相当于被封装在包内。

包内:该外部类出现在包内的其他类中不需要加包名;

包外:该外部类无法存在于包外的其他类中,即使导包也没用。

3、public修饰外部类,该类不仅能被包内的其他类所访问,也能被包外的其他类所访问。

包内:该外部类出现在包内的其他类中则不需要加包名;

包外:该外部类若想被包外的其他类中所访问,可以在类名前面加上包名,也可以通过import关键字进行导包。

二、权限修饰符修饰成员的包内包外情况分析:
(ps:因为静态成员方法相当于和方法所在类所绑定,可以直接通过方类名去调用,也可以通过方法所在类的对象来调用(相当于非静态方法的调用了)。为了方便,都以权限修饰符修饰非静态成员方法进行分析,权限修饰符修饰成员变量是一个道理,就不浪费空间了)

1、public修饰成员方法

包内:可以在包中任意类中直接创建该方法所在类或子类的对象进行方法的调用;

包外:可以在包外任意类中直接创建该方法所在类或子类的对象进行方法的调用。

2、protected修饰成员方法:最想写的就是这个修饰符,它是专门为子类所提供的一个权限修饰符。

包内:可以在包中任意类中直接创建该方法所在类或子类的对象进行方法的调用;

包外:只能创建该方法所在类的子类的对象进行方法的调用,方法所在类的对象无法进行调用。

3、default修饰成员方法:则该外方法相当于被封装在包内了。

包内:可以在包中任意类中直接创建该方法所在类或子类的对象进行方法的调用;

包外:无法访问该方法。

4、private修饰成员方法:则该外方法相当于被封装在类中了。

包内:仅在方法所在类中可以被访问,包中其他类也无法访问;

包外:无法访问该方法。

小结一下:
外部类仅能被public和default修饰。倘若外部类被default修饰则只能在包内中进行访问;被public修饰既能在包内中进行访问也能在包外访问,在包外出现时必须带上包名,否则就导包。

成员可以被4中权限修饰符所修饰,由大到小依次为public、protected、default、private。其中该成员若想在包外被调用,则只能用public和protected权限修饰符所修饰。包外:成员被public修饰时,方法所在类的对象和子类的对象都能调用;成员被protected修饰时,只有子类的对象能调用。

Java中权限修饰符相关推荐

  1. 关于Java中各种修饰符与访问修饰符的说明

    关于Java中各种修饰符与访问修饰符的说明 类: 访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 ...

  2. java中访问修饰符_Java中的访问修饰符介绍

    java中访问修饰符 什么是访问修饰符? (What are Access Modifiers?) Have you ever wanted to define how people would ac ...

  3. java中访问修饰符_Java中的非访问修饰符是什么?

    java中访问修饰符 Java非访问修饰符 (Java non access modifiers) We have 7 non-access modifiers in Java. The name o ...

  4. Java 中的修饰符总结

    学习了编写 Java 程序中的修饰符总结,而在编写Java程序时,都会遇到Java中的修饰符总结.所以往下面学习时,应当注意以下几点: 修饰符总结:四个访问控制符:注意:在不写访问控制符的情况下,就是 ...

  5. Java访问权限修饰符的区别

    Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符: private: Java语言中对访问权限限制的最窄的修饰符,一般称 ...

  6. Java访问权限修饰符

    1.Class类的访问权限:  public:可以供所有的类访问.  默认:默认可以称为friendly但是,java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++.默认的访问权 ...

  7. Java访问权限修饰符详解

    Java中的访问权限修饰符(Java关键字) 今天很皮的发现,自己现在竟然不会玩儿Java基础了,就翻看了一下自己的笔记,写一篇文章复习一下! 测试环境:Java运行环境,myEclipse. 测试前 ...

  8. 在java中 接口修饰符,Java接口中的修饰符

    示例 < Oracle Java样式指南>指出:当修饰符是隐式的时,不应将它们写出来. (有关上下文和指向实际Oracle文档的链接,请参见Oracle Official Code Sta ...

  9. [Java基础]权限修饰符

    权限修饰符:

最新文章

  1. 【冷门实用小工具】轻量级流程图工具ClickCharts PRO绿色版,ClickCharts PRO下载【亲测有效】
  2. 解题报告(二)C、(darkBZOJ 3771)Triple(生成函数 + FFT + 容斥原理)(3)
  3. 双程动态规划 nyoj61
  4. windows磁盘分区
  5. while loading shared libraries: libmysqlclient....
  6. 机器学习入门:K-近邻算法
  7. vue 传递多行数据_vue 数据传递的方法
  8. 使用Docker安装Spark集群(带有HDFS)
  9. Objective-C浮点数转化整数(向上取整、向下取整)
  10. SpringAOP描述及实现_AspectJ详解_基于注解的AOP实现_SpringJdbcTemplate详解
  11. 为什么要从自然数扩大到实数,进而扩大到复数?
  12. Bootstrap源代码多行代码
  13. Linux学习总结(32)——Shell脚本高效编写技巧
  14. php case 多个条件判断语句,Shell case语句(多分支条件判断)
  15. SQL Server 2016完整数据库备份的演练
  16. java dom4j 写xml文件_Java实现——Dom4j读写XML文件
  17. 计算机txt公式,完整word版本积分公式
  18. html页面缩小图片缩小,如何缩小html页面中的图片大小?
  19. mysql同时满足升序和降序_mysql升序和降序语句
  20. 旋转矩阵之到底顺时针还是逆时针

热门文章

  1. ipython notebook_ipython notebook使用教程
  2. Protel 99 SE 库元件
  3. 个人免签支付APP监听和云端监听免挂机的设置说明
  4. php微信域名检测工具,微信域名检测 微信域名检测官方接口的调用代码分享
  5. kotlin coroutines 协程教程-入门用法
  6. APP定制开发与普通开发有什么区别
  7. 海思3518E开发笔记2.7——海思VENC(Video Encode)模块详解
  8. “SaaS加速器”赋能开发者-以产业平台助燃生态布局
  9. 「人物特写」酷派重走高端市场,能否王者归来?
  10. 【python编程】基础知识2—语句:循环,条件,break,pass,continue