Java访问权限就如同类和对象一样,在Java程序中随处可见。

Java的访问权限,根据权限范围从大到小为:public > protected > package > private。

在讲解之前要说明的是:这里的“使用”一词的意思是,类的实例化(实例化一个对象),属性的访问和方法的调用。

首先讲解Java类的访问权限。Java中的类只有两种访问权限,public和package(默认访问权限)。如果一个类被public修饰,那么这个类可以在任何包中被使用。如果一个类的权限是package,那么这个类只能在其所在的包中被使用。

接下来讲解属性和方法的访问权限。首先属性和方法的访问权限受限于类的访问权限,即属性和方法的访问权限最大为类的访问权限。当一个属性或方法的访问权限为public时,如果其所属类的访问权限是public,那么这个属性或方法就可以在任何包中被调用;如果其所属类的权限为package时,那么这个属性或方法只能在其所属类所在的包中被调用。当一个属性或方法的访问权限为package时,那么这个属性或方法只能在其类所在的包中被调用。当一个属性或方法的访问权限是private时,那么这个属性或方法只能在类中被调用。

然后来讲解protected来修饰属性或方法的情形。如果一个属性或方法被protected修饰,首先这个属性或方法只能在类所处的包中被使用。其次,如果有类继承了父类中的protected修饰的属性或方法,那么子类也可以访问父类中的protected属性或方法,即使子类与父类不在同一个包中。

最后来讲解一下继承中的访问权限问题。在继承中,子类覆写父类的方法时,方法的访问权限必须大于等于父类中方法的访问权限。如果子类和父类在同一个包中,那么子类可以继承父类中被public、protected、package修饰的属性和方法。如果子类和父类不在同一个包中,那么子类只能继承父类中被public、protected修饰的方法。如果在package A中有类Base, 在package B中有类Son,Son继承Base, Base base = new Son(), 那么base对象在进行方法调用时必须知道,base对象所能调用的方法的权限是取决于Base类中方法的访问权限,而非Son中方法的访问权限。

  

  

  

Java权限讲解的更多相关文章

  1. Java 权限框架 Shiro 实战二:与spring集成、filter机制

    转自:https://www.cnblogs.com/digdeep/archive/2015/07/04/4620471.html Shiro和Spring的集成,涉及到很多相关的配置,涉及到shi ...

  2. (转)深入浅出linux系统umask值及其对应的文件权限讲解

    浅出linux系统umask值及其对应的文件权限讲解 原文:http://blog.51cto.com/oldboy/1060032 缘起:1.此文的撰写特别为感谢51cto的博客工作人员和领导,老男 ...

  3. java集合讲解

    java集合讲解 1.概述 集合类的顶级接口是Iterable,Collection继承了Iterable接口 常用的集合主要有 3 类,Set,List,Queue,他们都是接口,都继于Collec ...

  4. java权限管理与用户角色权限设计

    java权限管理与用户角色权限设计 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器 ...

  5. java 权限控制

    网上或参考书中,对于java权限控制大多给出一张看似很整齐很好记实则不好理解的表格,我整理了一个2.0升级版,自认为会好理解很多,希望可以有所帮助. 同一包内 不同包内 修饰符 当前类 非当前类(含子 ...

  6. Java ActiveMQ 讲解(一)理解JMS 和 ActiveMQ基本使用(转)

    转自:http://www.cnblogs.com/luochengqiuse/p/4678020.html?utm_source=tuicool&utm_medium=referral 最近 ...

  7. Java 权限修饰符

    Java应用有很多类,但有些类并不希望被其他类使用.每个类中都有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用.如何能做到访问控制呢?就需要使用访问权限修饰符. Java语言中的访 ...

  8. java泛型讲解

    原文: https://blog.csdn.net/briblue/article/details/76736356 泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是 ...

  9. Java 权限框架 Shiro 实战一:理论基础

    Apache Shiro 官网地址:http://shiro.apache.org/ Apache Shiro is a powerful and easy-to-use Java security ...

随机推荐

  1. cocos2d-x 3.0环境搭建

    原文来自于:http://blog.csdn.net/linzhengqun/article/details/21663341 安装工具 1. 配置JDK JDK下载地址:http://www.ora ...

  2. delphi 数组类型

    数组类型 数组类型定义了一组指定类型的元素序列,在方括号中填入下标值就可访问数组中的元素.定义数组时,方括号也用来指定可能的下标值.例如,下面的代码中定义了一个有 24 个整数的数组:type     ...

  3. WWDC2015

     

  4. Sequence用堆排序

    Description Given m sequences, each contains n non-negative integer. Now we may select one number fr ...

  5. request 和response 中的setCharacterEncoding区别

    response和request的setCharacterEncoding 一.request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值. 指 ...

  6. [置顶] 《MFC游戏开发》笔记一 系列简介

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9299121 作者:七十一雾央 新浪微博:http:/ ...

  7. SQL Server blocking session

    select * from sys.sysprocesses where blocked>0; 96被95block住了. dbcc INPUTBUFFER(95) dbcc INPUTBUFF ...

  8. java中的静态方法

    静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间, ...

  9. oracle数据库性能调优

    一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子 ...

  10. poj 3264 RMQ

    直接写个RMQ就能过. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...