java访问控制权限一句话描述版
十四、java的访问控制(包、访问修饰符、修饰符)

十四、java的访问控制(包、访问修饰符、修饰符)一、 java的类包编写好一个源程序后,首先要执行javac命令进行编译源文件,并生成与源文件同名后缀为“.class”的字节码文件(类文件),该类文件与源文件默认在同一个目录中。
该类文件是由用户创建的,而在java编程环境中,java本身提供了大量的类文件,在编程时可以直接引入使用,极大方便了程序的编写。
包的定义:是Java编程的基础,包蕴涵于标准类的体系结构和用户自己的程序中,包是有唯一命名的类的集合。
在java中,包分为用户包和系统包。
一)用户包:即由用户在项目中创建的包。
在命令提示符下,使用javac编译程序时,将生成类文件,该文件默认与源文件在同一目录下,如果一个项目很大,为了方便组织和管理,一般将不同的类组织起来进行管理,这就需要用户自定义包声明创建包package <包名1>.[<包名2>.[<包名3>..……]]这里,包就是源程序根目录下的文件夹名称,但与window目录结构表示法稍有不同的是,将window目录中的斜杠“\”用实心点“.”来代替。
比如,HelloWorld.java源文件在C:\javaTest目录里,为其源代码声明一个包,这个源程序代码如下:package lib.hellopublic class HelloWorld{//程序的主函数入门public staticvoid main(String args[]){//输出打印字符语句System.out.println("HelloWorld!");}}程序的执行步骤:1、在命令提示符下进入C:\javaTest,编译源程序:javac HelloWorld.java,生成HelloWorld.class类文件。
2、在C:\javaTest目录中新建lib文件夹,在lib文件夹中新建hello 文件夹,将HelloWorld类文件剪切到hello文件夹。
java访问控制权限一句话描述版

(1)私有的:用关键字private修饰,只有本类可见。
(2)默认的:不用访问控制符关键字修饰,在本类、本包可见,不同包的子类都不可见。
(3)受保护的:用关键词protected修饰,在本类、本包、所有子类中可见。
(4)公共的:用关键字public修饰,对一切情况皆可见。
public修饰的内容限制最小,也可以说是没有限制,可以在其他任何位置访问,在实际项目开发中,一般用来修饰类,方法和构造器;
protected修饰的内容可以被同一个包的其他类访问,也可以被不同包中的子类访问,在实际项目开发中,一般用来修饰只开放给子类使用的属性、方法和构造方法;
无访问控制符修饰的内容可以被同一个包中的类访问,在实际项目开发中,一般用于修饰一个包内部的功能类,这些类的功能只能辅助本包中的其他类,其他情况都不要使用这个访问控制符;
private修饰的内容是私有的,限制最大,只能在本类中访问,而不能被类外部的任何类访问,在实际项目开发中,一般用来修饰类的属性或只在本类内部使用的方法。
在具体选用访问控制符时,一般可以遵照“私有属性,公开方法,不用默认”这句口诀。
浅析Java中的访问控制权限

浅析Java中的访问控制权限Java中为什么要设计访问权限控制机制呢?主要作⽤有两点:(1)为了使⽤户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接⼝的⼀部分。
(2)为了让类库设计者可⽤更改类的内部⼯作⽅式,⽽不必担⼼会对⽤户造成重⼤影响。
Java中的访问权限控制的等级,按照权限从⼤到⼩依次为:Public -> protected -> 包访问权限(没有权限修饰词)-> private。
⼀、包(package)Java中包(package)的概念和C++中命名空间(namespace)的概念很类似,都可以限制类的作⽤域。
⼆者最⼤的差别在于,Java中的包隐式地指明了类的树形层级结构(同时也是Java源码⽂件的⽬录结构)。
这样做的好处在于:可以通过⽂件系统中对于⽂件路径唯⼀性的要求来限制类的唯⼀性。
1、代码组织编写⼀个Java源代码⽂件(.java⽂件)时,此⽂件通常被称为编译单元。
在编译单元内最多允许有⼀个public类,且该类的名称必须与⽂件名完全相同(包括⼤⼩写)。
编译⼀个.java⽂件时,在.java⽂件中的每个类都会有⼀个.class输出⽂件,这个⽂件名和类名是相同的。
Java可运⾏程序是⼀组可以打包并压缩为⼀个Java⽂档⽂件(JAR包,使⽤Java的jar⽂档⽣成器)的.class⽂件。
Java解释器负责这些⽂件的查找、装载和解释。
类库实际上是⼀组类⽂件。
其中每个.java⽂件最多允许有⼀个public类,以及任意数量的⾮public类。
因此,每个⽂件都有⼀个构件。
如果要将这些构件(每个构建有⼀个.java⽂件和若⼲个.class⽂件)组织起来,形成不同的群组,可以使⽤Java中的关键字package。
2、包(package)的作⽤(1) 把功能相似或相关的类或接⼝组织在同⼀个包中,⽅便类的查找和使⽤。
(2) 如同⽂件夹⼀样,包也采⽤了树形⽬录的存储⽅式。
Java访问控制符原理及具体用法解析

Java访问控制符原理及具体⽤法解析Java包中的相关概念包的概念 Java中的包类似于操作系统中的⽂件夹,将具有类似功能的类或者相同的类放在相同的包⾥⾯,便于组织与管理包的作⽤ 1.⼀是开发过程中避免类名重复问题; 2.⼆是对代码整理归类,将功能相近的类放到⼀个包中管理; 3.三是限定访问权限(default)就是包访问权限。
简述调⽤某个包中的类的三种⽅式 1>使⽤⼀个类的全名:即包名+类名 注意:在包中,所有类对真正名字将是包名+类名的组合,所以在运⾏的时候要将包层给写上,不能直接写类名。
2>使⽤import语句导⼊⼀个包中的所有的类。
3>使⽤import语句导⼊⼀个包中的特定的类。
Java中访问控制符的具体⽤法为什么需要控制对成员的访问? 第⼀个原因是防⽌程序员接触他们不该接触的东西---通常是内部数据类型的设计思想。
进⾏访问控制的第⼆个原因是允许库设计⼈员修改内部结构,不⽤担⼼它会对客户程序员造成什么影响。
Java的访问控制级别分类 1.类访问控制级别 public default(默认的,什么都不⽤写,包内访问控制符) 2.对象访问控制级别 public:它修饰的成员没有限制,任何包中的任何类都能访问。
protect:它修饰的只能被同⼀个包中的类访问,或者不同包中的⼦类访问。
default:只能被同⼀个包中的类访问,包括同⼀个包中的⼦类。
private:只能被同⼀个类中的⽅法访问。
访问权限访问权限同⼀个类内部同⼀个包内部不同包中的⼦类不同包的⾮⼦类public∨∨∨∨protected∨∨∨×default∨∨××private∨××× 总结: 1>在⼀个类的内部,访问控制符是透明的,失效的 2>在同⼀个包的内部,只有private有成员不能进⾏访问 3>在不同包存在继承关系的两个类之间,只有public成员和protected成员可以进⾏访问 4>在不同包之间,只有共有成员可以进⾏访问代码演⽰ (1)在⼀个类的内部,所有的成员彼此之间都可以进⾏相互访问,访问控制符是透明的,失效的,共有的可以调⽤私有的,私有的可以调⽤共有的。
Java访问权限原理与用法详解

Java访问权限原理与⽤法详解⽬录构造者模式思想包层次结构包的好处不同程序包下的类的⽅法访问⽅式访问修饰符static静态变量(类变量)静态变量和实例变量的区别静态变量的应⽤场合静态块局部代码块静态⽅法静态⽅法和实例⽅法的区别应⽤场合静态导⼊单例模式饿汉模式懒汉模式API之Math类Random类本⽂实例讲述了Java访问权限原理与⽤法。
分享给⼤家供⼤家参考,具体如下:构造者模式思想进⾏初始化,解决了多个构造器重载,构造器参数过多记不住的情况。
package day7;//声明⼀个程序包class Employee{private String name;private int no;private int age;private String sex;private String address;//alt + shift + spublic int getNo() {return no;}/* public Employee() {}*/public Employee setNo(int no) {this.no = no;return this;}public String getName() {return name;}public Employee setName(String name) { = name;return this;}public int getAge() {return age;}public Employee setAge(int age) {this.age = age;return this;}public String getSex() {return sex;}public Employee setSex(String sex) {this.sex = sex;return this;}public String getAddress() {return address;}public Employee setAddress(String address) {this.address = address;return this;}/* public Employee(String name, int no, int age, String sex, String address) { = name;this.no = no;this.age = age;this.sex = sex;this.address = address;}*/public void show() {System.out.println(no+","+name+","+age+","+sex+","+address);}}public class TestEmployee {public static void main(String[] args) {/* Employee tom = new Employee("Tom",12,33,"男","上海");tom.show();*//*构造者模式思想:进⾏初始化。
Java访问权限控制

Java访问权限控制Java访问权限控制修饰符⽤来定义类、⽅法或者变量,通常放在语句的最前端。
Java语⾔提供了很多修饰符,主要分为以下两类:访问修饰符⾮访问修饰符其中⾮访问修饰符主要有:static、final、abstract、synchronized和volatile,⾮访问修饰符根据各⾃的特性来保证特定功能的实现。
Java中使⽤访问控制符来保护对类、变量、⽅法和构造⽅法的访问,访问控制修饰符对应的权限控制的⼤⼩情况为:public > protected > default(包访问权限) > private。
1. 编译单元和包编译单元:即为最⼩的可以被编译且执⾏的Java⽂件。
⼀个.java⽂件就是⼀个编译单元,⼀个编译单元必须只包含有⼀个public类,可以包含有其他⾮public的类,并且⽤publi类标⽰的类名必须和⽂件名相同。
如果.java⽂件中不包含有publi类,则这个类也是没有意义的,因为不能被外界所访问。
.java⽂件中包含有⼏个类,编译后就会⽣成⼏个.class⽂件。
包含有⼀组类,是以⼀个名字空间集合在⼀起的类⽽已。
2. 访问控制修饰符public : 对所有类可见使⽤对象:类、接⼝、变量、⽅法protected : 对同⼀包内的类和所有⼦类可见使⽤对象:变量、⽅法。
注意:不能修饰类(外部类)default (即缺省,什么也不写): 在同⼀包内可见,不使⽤任何修饰符使⽤对象:类、接⼝、变量、⽅法。
private : 在本类中可见使⽤对象:变量、⽅法。
注意:不能修饰类(外部类)private和protected修饰符不能⽤以修饰类/接⼝2.1 公有访问修饰符-public被声明为 public 的类、⽅法、构造⽅法和接⼝能够被任何其他类访问。
如果⼏个相互访问的 public 类分布在不同的包中,则需要导⼊相应 public 类所在的包。
由于类的继承性,类所有的公有⽅法和变量都能被其⼦类继承。
Java类成员访问权限控制知识总结

Java类成员访问权限控制知识总结⼀前⾔这篇⽂章是很基础的⼀⽂,没多⼤深度,对于开发⼈员必然是熟练于⼼。
本篇⽂章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了⾯向对象的封装特性;将类成员使⽤不同的访问级别控制,在数据封装后,其他的类成员想要访问当前类成员,就必须要有⾜够的权限才能访问;这样做的⽬的就是我可以随意修改不想让其他类成员没有权限访问的数据,只要约定好相关的协议,不影响其他类成员访问即可;⼆权限修饰词介绍public 意指公有的意思,其修饰的成员权限最低,表⽰任何成员都可以访问;注意点是⼀个java源⽂件中只能有⼀个类被声明为public;defaut 默认级别,成员没有修饰符号,在同⼀个包内能被其他成员访问;protected 受保护的意思;表⽰⼦类能够继承⽗类的⽅法;在同⼀个包内被其修饰的成员,其⼦类能够访问;注意点是不可以修饰外部类;private 私有的意思;权限最⾼,表⽰只允许类内部成员可以访问;注意点是不可以修饰外部类;修饰符同⼀个类中同⼀个包中的其他类不同包的⼦类中不同包的⾮⼦类中public true true true trueprotected true true truedefault true trueprivate true三具体实施3.1 public在com.youku1327.base.authority2 包中创建了⼀个星球类,有个成员是shine表⽰光线,对应的getShine⽅法使⽤public修改,⽅法意思是获得光线;package com.youku1327.base.authority2;/*** @Author lsc* <p> 星球类 </p>*/public class Planet {private String shine = "好耀眼";public String getShine(){return shine;}}在 com.youku1327.base.authority1 包中创建类ZSZXZ, 使⽤import com.youku1327.base.authority2.Planet;导⼊ Planet星球类;在main⽅法中创建星球类,调⽤获得光线的⽅法,得到输出结果是好耀眼;验证了public权限最低,不同包之间得⾮⼦类就可以访问;package com.youku1327.base.authority1;import com.youku1327.base.authority2.Planet;/*** @Author lsc* <p> </p>*/public class ZSZXZ {public static void main(String[] args) {// 创建星球实体Planet planet = new Planet();// 访问公有成员String shine = planet.getShine();// 好耀眼System.out.println(shine);}}将星球类的getShine⽅法修饰符号改为 protected;package com.youku1327.base.authority2;/*** @Author lsc* <p> 星球类 </p>*/public class Planet {private String shine = "好耀眼";protected String getShine(){return shine;}}在com.youku1327.base.authority1中创建Earth类继承星球类Planet(初学者只要理解extends关键字表⽰继承的意思),继承的⽅法是 getShine⽅法,然后在主类中创建地球实例,调⽤getShine⽅法,实际上是调⽤ Planet的 getShine ⽅法(super.getShine(),super意指⾼级,表⽰⽗类);验证了不同包的⼦类可以调⽤⽗类被protected修饰的成员;package com.youku1327.base.authority1;import com.youku1327.base.authority2.Planet;/*** @Author lsc* <p> 地球类</p>*/public class Earth extends Planet {@Overrideprotected String getShine() {// 调⽤了⽗类的getShine⽅法return super.getShine();}// 执⾏前注释掉ZSZXZ中的main⽅法public static void main(String[] args) {// 创建地球Earth earth = new Earth();// 好耀眼System.out.println(earth.getShine());}}在回去看看原来的ZSZXZ类的getShine发现报错了;验证了不同包的⾮⼦类,使⽤protected修饰⽆法访问;3.3 default将 Planet 星球类的 getShine ⽅法的修饰符去掉,代码如下package com.youku1327.base.authority2;/*** @Author lsc* <p> 星球类 </p>*/public class Planet {private String shine = "好耀眼";String getShine(){return shine;}}随着发现之前的地球类报错了,我们把整个地球类注释掉;验证了default修饰的成员不能夸包访问;我们在 Planet 的同级包下创建Moon类,调⽤ Planet的getShine⽅法,成功执⾏;验证了default修饰的成员能在同⼀个包中被访问;package com.youku1327.base.authority2;/*** @Author lsc* <p> </p>*/public class Moon {public static void main(String[] args) {// 创建星球实体Planet planet = new Planet();// 访问公有成员String shine = planet.getShine();// 好耀眼System.out.println(shine);}}3.4 private将 Planet 星球类的 getShine ⽅法的修饰符改为private;package com.youku1327.base.authority2;/*** @Author lsc* <p> 星球类 </p>*/public class Planet {private String shine = "好耀眼";private String getShine(){return shine;}}发现之前的的Moon类主⽅法中的getShine⽅法报错了,验证了private在同包不同类中不可以被访问;getShine() 中可以使⽤shine 字段,验证了同⼀个类中可以使⽤private修饰的成员;private String shine = "好耀眼";private String getShine(){return shine;}}发现之前的的Moon类主⽅法中的getShine⽅法报错了,验证了private在同包不同类中不可以被访问;getShine() 中可以使⽤shine 字段,验证了同⼀个类中可以使⽤private修饰的成员;以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java四种访问权限实例分析

java四种访问权限实例分析引⾔Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使⽤。
下⾯整理⼀下,在什么情况下,有哪些访问权限可以允许选择。
⼀、访问权限简介访问权限控制:指的是本类及本类内部的成员(成员变量、成员⽅法、内部类)对其他类的可见性,即这些内容是否允许其他类访问。
Java 中⼀共有四种访问权限控制,其权限控制的⼤⼩情况是这样的:public > protected > default(包访问权限) > private ,具体的权限控制看下⾯表格,列所指定的类是否有权限允许访问⾏的权限控制下的内容:访问权限本类本包的类⼦类⾮⼦类的外包类public是是是是protected是是是否default是是否否private是否否否1、public:所修饰的类、变量、⽅法,在内外包均具有访问权限;2、protected:这种权限是为继承⽽设计的,protected所修饰的成员,对所有⼦类是可访问的,但只对同包的类是可访问的,对外包的⾮⼦类是不可以访问;3、包访问权限(default):只对同包的类具有访问的权限,外包的所有类都不能访问;4、private:私有的权限,只对本类的⽅法可以使⽤;注意:要区分开 protected 权限、包访问权限,正确使⽤它们;当某个成员能被所有的⼦类继承,但不能被外包的⾮⼦类访问,就是⽤protected;当某个成员的访问权限只对同包的类开放,包括不能让外包的类继承这个成员,就⽤包访问权限;使⽤访问权限控制的原因:1)使⽤户不要碰触那些他们不该碰触的部分;2)类库设计者可以更改类的内部⼯作的⽅式,⽽不会担⼼这样会对⽤户产⽣重⼤影响;⼆、访问权限控制的使⽤场景访问权限使⽤的场景可以总结为下⾯的五种场景,分别对访问权限的使⽤有不同的限制:1. 外部类的访问控制外部类(外部接⼝)是相对于内部类(也称为嵌套类)、内部接⼝⽽⾔的。
详解Java中的访问控制修饰符(public,protected,default,private)

详解Java中的访问控制修饰符(public,protected,default,private)Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况⼀直不能理解透彻。
今天下定决⼼,系统、全⾯地研究Java中的访问控制修饰符的所有⽅⾯,并整理成这篇⽂章,希望有同样疑惑的读者读完后能有所收获。
如果⽂章中出现错误,欢迎评论指出,共同交流~说在前⾯:这篇⽂章只研究Java中访问控制修饰符声明类的变量/⽅法的情况。
先抛出结论:* 成员变量/⽅法的访问权限* private default protected public* ⾃⼰包⾃⼰类 √ √ √ √* ⾃⼰包别的类 √ √ √* 别的包别的类有继承关系②① √* 别的包别的类⽆继承关系 √①:⼦类可以继承,但是不能访问⽗类的成员变量/⽅法(⼀般来说,可以访问就可以继承)。
②:有继承关系说明访问对象所在的类是⽗类。
1. 让我们来看⼀下Java中访问控制修饰符的定义。
Java中,可以使⽤访问控制符来保护对类、变量、⽅法和构造⽅法的访问。
访问的形式有以下四种:· 某个类的成员变量访问某个类的成员变量· 某个类的成员变量访问某个类的成员⽅法· 某个类的成员⽅法访问某个类的成员变量· 某个类的成员⽅法访问某个类的成员⽅法ps:以下代码均以第三种形式为例,其他形式基本⼀致。
根据访问对象的不同,访问的⽅式⼜可划分为两⼤类:· 访问对象在同⼀个类,此时可以通过[成员变量/⽅法的名字]直接访问。
class A {int a = 10;void printA() {System.out.println(a);}}printA()要访问a,因为它们在同⼀个类,所以可以通过a直接访问。
· 访问对象在不同类(假设访问对象在类B),此时可以通过声明、初始化B的⼀个对象,通过[对象名.成员变量/⽅法的名字]进⾏访问。
关于java的访问控制

关于java的访问控制
导语:封装特性有一个典型基础,就是对于访问的控制,让我们了解一下这项操作吧!
1. 访问控制
这也是java封装特性的一个基础,需要掌握的有:
public protected default private 对于class, method, field 的修饰作用
2. 流程控制
Java 流程控制的基础,虽然有些语法不一定很常用,但是都需要了解,并且在合适的地方使用它们。
需要掌握的有:if, switch, loop, for, while 等流程控制的语法
3. 面向对象编程的概念
这是一个java的核心概念,对于任何java开发者都需要熟练掌握。
Java中很多特性或者说知识点都是和java面向对象编程概念相关的。
在我的理解,一个好的开发者不仅仅需要了解这些特性(知识点)本身,也更需要知道这些对象在java的面向对象编程概念中是如何体现出来的,这样更有利于开发者掌握java这门开发语言,以及其他面向对象编程的语言。
在这里只是简单罗列了一下,主要的知识点包括有:面向对象三大特性:封装,继承,多态; 各自的定义概念,有哪些特性体现出来,各自的使用场景
静态多分派,动态单分派的概念
重载的概念和使用
继承:接口多实现,基类单继承
抽象,抽象类,接口
多态:方法覆盖的概念和使用
接口回调。
Java基础详解(一)Java的类成员访问权限修饰词(以及类访问权限)

Java基础详解(⼀)Java的类成员访问权限修饰词(以及类访问权限)在⼀个类的内部,其成员(包括成员变量和成员函数)能否被其他类所访问,取决于该成员的修饰词。
Java的类成员访问权限修饰词有四类:private,⽆(默认情况下),protected和public。
其权限控制如下表所⽰:修饰词本类同⼀个包的类继承类其他类private√×××⽆(默认)√√××protected√√√×public√√√√其中,默认情况下没有任何修饰词,这样的类成员具有“包访问权”,即位于同⼀个包中的类对其有访问权;⽽protected为“继承访问权”,即该类的⼦类对其具有访问权(同时,位于同⼀个包中的类也对其具有访问权)。
⽽对于Java中的“类”(不是其内部成员,两者要区分开),其访问权限修饰词仅有public和“⽆”(即包访问权)两种,⽽没有private和protected(有⼀个特例,就是“内部类”,其可以是private或protected的)。
所以对于类的访问权限,你仅有两个选择:包访问权或是public。
如果你不希望其他任何⼈对该类拥有访问权,你可以把所有的构造器都指定为private,从⽽阻⽌任何⼈创建该类的对象。
但是有⼀个例外,就是在该类的 static成员内部进⾏创建。
如:class Soup {// private Constructor!private Soup() {}// Allow creation via static method:public static Soup makeSoup() {return new Soup();}}另外,如果⼀个类的访问权限为“包访问权”,并且其内部有⼀个static的成员为public的话,则其他包中的类仍旧可以访问该static成员,哪怕它们并不能⽣成该类的对象。
Java学习笔记---访问权限控制

Java学习笔记---访问权限控制访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关;把⼀个代码放在某个为⽌,等过⼀会⼉回头再看时,有可能会发现有更好的⽅式实现相同的功能,这是重构的原动⼒之⼀,重构即重写代码,以使它更可读、更易理解,并因此更具有可维护性。
但是,通常会有⼀些消费者需要你的代码在某些⽅⾯保持不变。
因此,你想改变代码,⽽他们却想让代码保持不变。
由此产⽣了⾯向对象设计中需要考虑的⼀个基本问题:如何把变动的事物与保持不变的事物区分开来。
这对类库⽽⾔尤为重要,类库的消费者必须以来它所使⽤的那部分类库,并且能够知道如果类库出现了新版本。
它们并不需要改写代码。
从另⼀个⽅⾯来说,类库的开发者必须有权限进⾏修改和改进,并确保客户代码不会因为这些改动⽽受到影响。
类库的开发者必须保证在改动类库中的类时不得删除任何现有⽅法,因为那样会破坏客户端程序员的代码。
在有域存在的情况下,类库开发者要怎样才能知道究竟都有哪些域已经被客户端程序员所调⽤了呢?这对于⽅法仅为累的实现的⼀部分,因此并不想让客户端程序员直接使⽤的情况来说同样如此。
如果程序开发者想要移除旧的实现⽽要添加新的实现时,结果将会怎样呢?改动任何⼀个成员都有可能破坏客户端程序员的代码。
为解决这⼀问题,Java提供了访问权限修饰词,供类库⼈员向客户端程序员指明哪些是可⽤的,哪些是不可⽤的。
访问权限控制的等级,从最⼤权限到最⼩权限依次为:public,protected,包访问权限和private。
正确的做法是:尽可能将⼀切⽅法都定为private,⽽仅向客户端程序员公开你愿意让它们使⽤的⽅法。
包:库单元Java访问权限修饰词接⼝和实现类的访问权限1.包:库单元包的作⽤是将构建捆绑到⼀个内聚的类库单元中,使⽤关键字package加以控制,⽽访问权限修饰词会因类是存在于⼀个相同的包,还是存在于⼀个单独的包⽽受到影响。
包内包含有⼀组类,它们在单⼀的名字空间之下被组织在了⼀起。
java访问权限修饰限制符解析

Java语言的访问权限修饰符一个Java应用有很多类,但是有些类,并不希望被其他类使用。
每个类中都有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用。
如何能做到访问控制呢?就需要使用访问权限修饰符。
Java语言中的访问权限修饰符有4种,但是仅有3个关键字,因为不写访问权限,在Java中被称为默认权限,或同包权限,本文中以(default)代替。
下面按照权限从小到大的顺序对4中访问权限分别介绍。
1.私有权限(private)private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。
被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
2.默认权限(default)类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。
默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
3.受保护权限(protected)protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。
被protected修饰的成员,能在定义它们的类中,同包的类中被调用。
如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
4.公共权限(public)public可以修饰类,数据成员,构造方法,方法成员。
被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
有关Java语言的修饰符,需要注意的问题有如下几个:1.并不是每个修饰符都可以修饰类(指外部类),只有public和default可以。
2.所有修饰符都可以修饰数据成员,方法成员,构造方法。
3.为了代码安全起见,修饰符不要尽量使用权限大的,而是适用即可。
比如,数据成员,如果没有特殊需要,尽可能用private。
4.修饰符修饰的是“被访问”的权限。
Java代码1.<STRONG>import java.util.Stack;2.3.p ublic class aClass {4. fun() {5. static int i = 0;6. i++;7. }8.9. public static void main(String args[]) {1. aClass obj = new aClass();10. obj.fun();11. obj.fun();12. }13.14.}</STRONG>question is :what will be the value of I ?A. Compilation errorB. Run time ErrorC. 1D. 2此题考察修饰符,函数定义等,故从网上搜罗了下相关资料,总结如下:类、方法、成员变量和局部变量的可用修饰符类成员的访问控制符:即类的方法和成员变量的访问控制符,一个类作为整体对象不可见,并不代表他的所有域和方法也对程序其他部分不可见,需要有他们的访问修饰符判断。
理解Java访问权限的控制

理解Java访问权限的控制理解Java访问权限的控制今天我们来一起了解一下Java语言中的访问权限控制。
在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制。
考虑两个场景:场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理?场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1、fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理?此时,访问权限控制便可以起到作用了。
在Java中,提供了四种访问权限控制:默认访问权限(包访问权限),public,private以及protected。
注意,上述四种访问权限,只有默认访问权限和public能够用来修饰类。
修饰类的变量和方法四种权限都可以。
(本处所说的类针对的是外部类,不包括内部类)下面就分别针对修饰类和修饰类的成员来讲述这四种访问权限控制。
1.修饰类默认访问权限(包访问权限):用来修饰类的话,表示该类只对同一个包中的其他类可见。
public:用来修饰类的话,表示该类对其他所有的类都可见。
下面通过几个例子来看一下两者的区别:例1:Main.java:package com.cxh.test1; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub People people = new People("Tom"); System.out.println(people.getName()); } }People.javapackage com.cxh.test1; class People { //默认访问权限(包访问权限)private String name = null; public People(String name) { = name; } public String getName() { return name; } public void setName(String name) { = name; }} 从代码可以看出,修饰People类采用的是默认访问权限,而由于People类和Main类在同一个包中,因此People类对于Main类是可见的。
java 访问权限控制 讲义

java 访问权限控制讲义以下是关于Java访问权限控制的简要讲义:Java中的访问权限控制是通过关键字(access modifiers)来实现的。
这些关键字决定了类、方法、字段和构造函数的可见性和可访问性。
Java中有四种访问权限修饰符:1. public(公共访问权限):可以被任何类访问。
2. private(私有访问权限):只能在声明它的类内部访问。
3. protected(受保护访问权限):可以被同一包内的类访问,以及继承该类的子类访问。
4. 默认(默认访问权限):如果没有指定访问权限修饰符,则默认为包内可见。
下面是不同访问权限修饰符的使用场景和限制:- public:一般用于类、方法和字段,表示对所有类可见;- private:一般用于方法、字段和内部类,表示只有当前类内可见,其他类无法直接访问;- protected:一般用于方法、字段和内部类,表示对同一个包内的类和继承该类的子类可见;- 默认:即没有修饰符,默认用于类、方法和字段,表示对同一个包内的类可见。
以下是使用访问权限控制的示例代码:```javapublic class MyClass {public int publicField;private int privateField;protected int protectedField;int defaultField;public void publicMethod() {// 公共方法}private void privateMethod() {// 私有方法}protected void protectedMethod() {// 保护方法}void defaultMethod() {// 默认方法}}```上述示例代码中,`publicField`是公共字段,可以被任何类访问;`privateField`是私有字段,只能在`MyClass`内部访问;`protectedField`是受保护字段,可以被同一包内的类和继承`MyClass`的子类访问;`defaultField`是默认访问权限的字段,只能被同一个包内的类访问。
JAVA中访问权限控制

JAVA中访问权限控制JAVA中访问权限控制本篇主要记录关于JAVA中访问权限的学习。
实际上⽹上关于JAVA中四种访问权限的博⽂已⼗分详细了,但在实际编程中还是会存在⼀些疑问,主要是区别 protected 和 default 的问题,且实际在编程中对于对应修饰符修饰的⽅法或属性的调⽤依然是有⼀定讲究的。
以下是正⽂:⼀、访问权限JAVA中共有四种访问权限的控制,对应的权限从⾼到底为:public>protected>default(可不写)>private,具体的控制域见下表格。
访问权限同类同包⾮同包⼦类⾮同包⾮⼦类public√√√√protected√√√×default√√××private√×××public:⽆访问权限控制,所修饰的变量、⽅法,同包或⾮同包都是可以访问。
1. protected:同包都可以访问,⾮同包的⼦类可以访问。
2. default:包访问权限,⾮同包不可访问。
3. private:私有权限,只对本类中的⽅法可见。
这⾥主要区分protected和default的权限控制,当对于某个属性或⽅法:只需对包内的类可见,即使⽤default;考虑对⼦类可见,不管是否在同⼀个包中,即使⽤protected;⼆、访问权限实例对于不同访问权限的调⽤主要就区分四种了:同类同包⾮同包⼦类⾮同包⾮⼦类这⾥为了简便,只⽤了修饰符修饰属性,⽅法的访问权限实际相同。
1、同类中所有修饰符修饰均可见。
package access.packagea;/*chengzhichao2021/4/18关于JAVA中访问权限的学习:同包中所有修饰符修饰的都可见*/public class ClassA {private String a="a";String c="b";protected String b="c";public String d="d";public static void main(String[] args){ClassA classA=new ClassA();System.out.println(classA.a+classA.b+classA.c+classA.d);}}2、同包(不管是否是⼦类)private不可见,default、protected、public可见。
java权限控制

权限及static、final类中的数据成员和成员函数据具有的访问权限包括:public、private、protect、friendly(包访问权限)1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
作用域当前类同一package 子孙类其他packagepublic √√√√protected √√√×friendly √√× ×private √× × ×不写时默认为friendly ,也即是“包访问权限”。
protected权限:往往在初学Java的时候,都不会提访问权限和修饰符的问题,在Java的学习中一般都要到包的概念学完才会涉及访问控制:priavte 本类可见public 所有类可见protected 本包和所有子类都可见(本包中的子类非子类均可访问,不同包中的子类可以访问,不是子类不能访问)friendly 本包可见(即默认的形式)(本包中的子类非子类均可访问,不同包中的类及子类均不能访问)类的访问权限包括:包访问权限和public。
1.私有权限 privateprivate可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。
被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
2.默认权限 (default)类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。
默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无访问控制符修饰的内容可以被同一个包中的类访问,在实际项目开发中,一般用于修饰一个包内部的功能类,这些类的功能只能辅助本包中的其他类,其他情况都不要使用这个访问控制符;
(1)私有的:用关键字private修饰,只有本类可见。
(2)默认的:不用访问控制符关键字修饰,在本类、本包可见,不同包的子类都不可见。
(3)受保护的:用关键词protected修饰,在本类、本包、所有子类中可见。
(4)公共的:用关键字publi小,也可以说是没有限制,可以在其他任何位置访问,在实际项目开发中,一般用来修饰类,方法和构造器;
private修饰的内容是私有的,限制最大,只能在本类中访问,而不能被类外部的任何类访问,在实际项目开发中,一般用来修饰类的属性或只在本类内部使用的方法。
在具体选用访问控制符时,一般可以遵照“私有属性,公开方法,不用默认”这句口诀。