Java访问控制权限

Java的访问控制权限相比于C++等语言可能稍微复杂一点,不过也不难理解。Java的访问控制权限分为两块——“类或接口的访问控制权限”与“变量和方法的访问控制权限”。

1.类或接口的访问控制权限

    类或接口的访问控制权限是指能不能用该类建立对象,接口能不能被实现等等。能够修饰类或接口的访问控制权限的修饰符(modifier)只有两个——public和friendly.不过,值得一说的是friendly并不是Java的关键字,它只是一个习惯叫法,指的是“没有写访问控制权限修饰符”的情况。

public修饰的类或接口在同一个包中的任何一个类中都可以被访问。不同包呢?当然能访问啦,否则引包机制不就失效了嘛(因为引包相当于拿到了一个包的public类或接口)。

friendly修饰的类或接口在同一个包中的任何一个类中都可以被访问(和public相同),不能被不同包中的类访问。


总结
:类或接口的访问控制权限分为“包中”和“包外”。无论修饰符(modifier)是什么,在“包中”均可访问。对于“包外”,public修饰的类或接口可以被访问,friendly修饰的类或接口不能被访问。

2.变量和方法的访问控制权限

  
变量和方法的访问控制权限的修饰符(modifier)有四个——public,protected,friendly和private.

变量和方法在本类(定义该变量或方法的类)中不论访问控制权限修饰符是什么,均可被访问(这里先不考虑“静态”的情况)。那么接下来只研究类外。类外也分“包内”和“包外”,接下来就从这两方面说起,并且研究“包外”时只考虑引入的包中的public类,因为friendly的类连直接被访问都做不到,何谈访问变量和方法。

public修饰的变量和方法在“包内”和“包外”均可被访问。

protected修饰的变量和方法在“包内”可以被访问,在“包外”只能被子类访问。

friendly修饰的变量和方法在“包内”可以被访问,在“包外”不能被访问。

private修饰的变量和方法在“包内”或“包外”均不能被访问。

总结:对于“类外”,public,protected,friendly和private的严格性逐渐递增。public可以说没限制,protected剥夺了“包外”非子类的访问能力,friendly在protected基础上进一步剥夺了“包外”子类的访问能力,至此“包外”的访问能力全无;private更严格,它在friendly基础上更是一下剥夺了“包内”的访问能力。

总的来说,看某个成员能否被访问要分两步:1.根据所在类的访问控制权限看该类能否被访问;2.根据该成员的访问控制权限判断取得所在类后该成员能否被访问。

Java访问控制权限,布布扣,bubuko.com

时间: 2024-10-19 17:17:52

Java访问控制权限的相关文章

java访问控制权限和C++访问控制权限的对比

1.java修饰符权限 这里有一个包的概念,所谓同一个包是指*.java文件处于同一个文件夹下 2.C++修饰符权限 public:这是公有的成员,允许类外直接访问,当然,这要加上类作用域符::, protected:这是保护成员,只允许该类及其派生类访问 private:这是私有成员,只允许在该类中进行访问,当然,在类外只可以通过设定的公有函数进行访问. java访问控制权限和C++访问控制权限的对比

JAVA 基础 访问控制权限

包(package) package的作用 当编写一个JAVA源码文件时,此文件通常被称为编译单元.每个编译单元都必须有一个后缀名 .java . 而在编译单元中可以有一个 public 类,该类的名称必须和文件的名称相同.文件中允许有其他类,但是不能是public类. 当编译一个 .java 文件时,文件中的每个类都会有一个后缀为 .class 的输出文件,文件名和类名相同. Java可运行程序是一组可以打包压缩为一个Java文档文件(JAR,使用Java的jar文档生成器)的.class文件

Java 多态 父类和子类方法的访问控制权限

Java 多态 父类和子类方法的访问控制权限 @author ixenos 父类和子类方法的访问控制权限 继承是为了扩展类的功能,而这种扩展显然就是对一个原始类的扩展,目的还是向上转型来调用,所以这就是一个对象多态的问题. 既然多态,那么访问控制权限就要让父类也能访问. 也就是说,子类重写方法时不能使该方法拥有比父类更严格的访问控制权限. 否则违背了多态,导致向上类型转换后,使用父类变量无法调用该子类私有方法.

Java连载50-import导入、访问控制权限修饰符

一.import 1.import语句用来完成导入其他类,同一个包下的类不需要再导入 不在同一个包下需要手动导入. 2.import语法格式 import 类名: import 包名.*; //import语句需要编写到package语句之下,class语句之上. 3.java.lang.*;不需要手动引入,?系统自动引入. lang:language语言包,是java语言的核心类,不需要手动引入. 4.最终结论?: 什么时候需要import? 使用外部类,外部方法 5.快捷键 快速导包,我们用

Java——private default protected public访问控制权限

访问控制权限 protected范例

访问控制权限

访问控制权限 访问控制权限的等级,从最大权限到最小权限依次为:public,protected,包访问权限(没有关键字)和private. 默认访问权限没有任何关键字,但通常是指包访问权限.这就意味着当前包中的其他所有类对那个成员都有访问权限,但对于这个包之外的所有类,这个成员却是private.由于一个编译单元只能隶属于一个包,所以经由包访问权限,处于同一个编译单元的所有类彼此之间是自动可访问的.包访问权限允许将包内所有相关的类组合起来,以使它们之间可以轻松的相互作用. public:接口访问

spring容器与java访问权限的关系!

java中的访问控制权限有: public:无限制 任何人都能访问 protected:只允许在本类中相互调用,还可以由基于父类的子类来调用(即子类可以调用父类中的protected定义的参数或者方法) 默认:默认的权限为同包类调用(即com.xx能调用com包下的其他类,属性和方法,但没法调用com.demo.xx下由默认权限定义的类或者属性或者方法) private:私有权限,只能在本类中相互调用,不对外开放 public class Dem { private Dem () {} publ

论Java访问权限控制的重要性

人在什么面前最容易失去抵抗力? 美色,算是一个,比如说西施的贡献薄就是忍辱负重.以身报国.助越灭吴:金钱,算是另外一个,我们古人常说"钱乃身外之物,生不带来死不带去",但我们又都知道"有钱能使鬼推磨". 除去美色和金钱,我认为还有一个,就是读者的认可--"二哥,你的文章真的很棒,我特别喜欢.希望能多多更新Java基础知识,真的是受益良多,就好像是在读王小波的散文,但又学了编程!"--你说,收到读者这样暖暖的评语,还需要美色和金钱?"两者

1-14访问控制权限

4种访问控制权限 java访问级别修饰符主要包括:private .protected.public和default(默认),可以限定其他类对该类.属性和方法的使用权限. 注意以上对类的修饰只有:public和default,内部类除外 priavte和public都比较好理解和记忆,这里就不演示了,主要演示一下不同包下的两个具有父子关系的类里面使用protected和default的区别. 创建一个Person类 package com.monkey1024.score.sys; public