Java访问权限控制

访问权限控制

 

java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问权限控制的等级,从最大权限到最小权限依次是:public、protected、包访问权限(没有关键字)、private。

包:库单元

包内有一组类,它们在单一名字空间之下被组织在了一起。如果你向导入某个标准库中的类的话,可以使用import关键字。我们之所以要导入,就是要提供一个管理名字空间的机制。所有类成员的名称都是彼此分离的。所以具有相同方法的不同类在程序运行时不会出现错误的。

由于名字之间的潜在冲突,在java中队名称空间进行完全控制并为每个类创建唯一的标识符组合就成为了非常重要的事情。

当编写一个java源代码程序时,此文件通常被称为编译单元(有时也被成为转译单元)。每个编译单元都必须有一个后缀名.java。而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译器是不会接受的。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看到这些类的,因为它们不是public类型。

代码组织:编译一个.java文件时,在.java文件中的每一个类都会有一个输出文件,而该输出文件的名称与.java文件中的每个类的名称相同,只是多了一个后缀名.class。在编译少量的.java文件之后,会得到大量的.class文件。java可运行程序是一组可以打包并压缩为一个java文档文件(JAR,使用Java的jar文档生成器)的.class文件。java解释器负责这些文件的查找、装载和解释。

        类库实际上是一组类文件。其中每个文件都有一个public类,以及任意数量的非public类,因此每个文件都有一个构件。如果希望这些构建(每一个都有它们独立的.java和.class文件)从属于同一个群组,就可以使用关键字package。如果使用package,它必须是除了注释之外程序开头的第一句代码。

        

        创建独一无二的包名:利用操作系统的层次化的文件结构来解决java中的混乱问题。 package名称的第一部分是类的创建者的反顺序的Internet域名。第二部分是把package名称分解为你机器上的一个目录。所以当java程序运行并且需要加载.class文件的时候,它就可以确定.class文件在目录上所处的位置。

java解释器运行过程:

 

        冲突:如果将两个相同名称的类库以通配符“*”全部导入时,可能会出现有两个类库中有一样类出现,这就可能存在这潜在冲突。此时必须明确指出实例化类的类库。或者在导入类库的时候,只选用自己需要的类,不使用通配符。

java访问权限修饰词

        public、protected和private这几个java访问权限修饰词在使用时,是置于类中每个成员的定义之前的,无论它是一个域还是一个方法。每个权限修饰符仅控制它修饰的特定定义的访问权。

        如果不提供任何访问权限修饰词, 则意味着它是“包访问权限”。

 

        包访问权限:默认访问权限没有任何关键字。这就意味着当前包中的所有其他类对那个成员都有访问权限,但对于这个包之外的所有类,这个成员就是private。经由包访问权限,处于同一编译单元中的所有类之间是自动可访问的。

包访问权限允许将包内所有相关的类组合起来,以使它们彼此之间可以轻松地相互作用。

 

        public:接口访问权限

        使用关键字public,就意味着public之后紧跟着的成员声明自己对每一个人都是可用的。

        默认包:同处于相同的目录并且没有给自己设定任何的包名称之间的两个类是可以相互访问的,因为java将这样的文件自动看成是隶属于该目录的默认包。于是它们为该目录中的所有其他的文件都提供了包访问权限。

 

        private:你无法访问

        除了包含该成员的类之外,其他任何类都无法访问这个成员。private允许你随意改变该成员,而不必考虑这样做会影响包内其他的类。对private的使用是十分重要的,特别是在多线程环境下。

任何可以肯定只是该类的一个“助手”方法的方法,都可以将它指定为private,以确保不会再包内的其他地方误用到它,于是也就防止你去改变或删除这个方法。

 

        protected:继承访问权限

        关键字protected处理的是继承的概念,通过继承可以利用一个现有类(基类)将新成员添加到该现有类中而不必碰该现有类。爱可以改变该类的现有成员的行为。用extends继承一个现有类。

希望有特定成员,把对它的访问权限赋予派生类而不是所有类。就可以使用protected来完成这一工作。protected也提供包访问权限,也就是说,相同包内的其他类可以访问protected。

接口和实现

        访问权限的控制常被称为是具体实现的隐藏。

        把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。其结果是一个同时带有特征和行为的数据类型。

出于两个很重要的原因,访问权限控制将权限的边界划在了数据类型的内部。1.设定客户端程序员可以使用和不可以使用的界限。在结构中建立自己的内部机制,而不必担心访问出错。2.将接口和具体实现进行分离。

将接口展示给某个类的任务是由类浏览器来完成的,

 

类的访问权限

        在java中,访问权限修饰词也可以用来确定库中的哪些类对该库的使用者是可用的。

        类即不可以是private的(这样会使得除了该类之外,其他任何类都不可以访问它);也不可以是protected的。所以对于类的访问权限,只能是包访问权限或是public。如果不希望任何人对该类有访问权限,可以把所有的构造器都指定为private,从而阻止了任何人创建该类的对象,但是有一个例外,就是你在该类的static成员内部可以创建。

 

 

时间: 2024-10-14 07:08:57

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

Java 访问权限控制:你真的了解 protected 关键字吗?

摘要: 在一个类的内部,其成员(包括成员变量和成员方法)能否被其他类所访问,取决于该成员的修饰词:而一个类能否被其他类所访问,取决于该类的修饰词.Java的类成员访问权限修饰词有四类:private,无(默认情况下,包访问权限),protected 和 public,而其中只有包访问权限和public才能修饰一个类(内部类除外).特别地,很多的介绍Java的书籍对protected介绍的比较笼统,常常会对大家造成误解.因此,本文重点揭示了 protected 关键字的内涵和用法,并介绍了一些其他

Java访问权限控制小结

进行访问权限控制的两个原因 第一,可以控制类成员的可见性,使客户程序员只看到应该看到的内容 第二,可以使类的创建者随意改变类内部的工作方式,而不必担心会对客户端程序产生重大影响 四种访问权限 pulic 默认(包权限) protected private 用于域和方法 public表示所有人对本成员都可以访问 默认访问权限表示同一包下的类可以对本成员进行访问,其他包中的则不可以(!默认包) protected用于类的继承中,protected提供包访问权限,同时,子类也对protected成员具

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

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

[THINKING IN JAVA]访问权限控制

6 访问权限控制 6.1 包:库单元 package.import.import *.import static: 修改classpath环境变量可以将自己写的类库添加至环境变量并在任何java程序中import: 6.2  JAVA访问权限修饰符 访问权限:public>protected>包访问权限(没有限定词)>private: public:任何类在任何地方均可访问: 默认包:没有声明package并且处于同一目录下,则他们隶属于默认包,处于同一个package下: protec

java 访问权限控制

java提供四种访问权限: public > protected > 包访问权限(无关键词) > private 包:库单元 对于包访问权限,一个包内的都可以访问. 在eclipse中创建类时如果不创建包,类将会被创建在默认包(default package)中,我一直习惯这样,然而这是一个很不好的做法(= =!)不相关的类应该置于不同的包.因为如果一个包中有两个名字相同的类会产生冲突的. 把不同的类放入不同的包,如果想使用其他包的类,将需要在名字前加上包名.例如ArrayList类在j

Java成员的访问权限控制

Java中的访问权限控制包含两个部分: 类的访问权限控制 类成员的访问权限控制 对类来说,访问权限控制修饰符可以是public或者无修饰符(默认的包访问权限): 对于类成员来说,访问权限控制修饰符可以是public,protected, package private(无修饰符), or private. 以下表格总结了类成员中不同访问权限控制修饰符对应的访问级别:

浅析Java中的访问权限控制

浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理? 场景2:如果工程师A编写了一个类ClassA,其中有两个方法fun1.fun2,工程师只想让fun1对外可见,也就是说,如果别的工程师来调用ClassA,只可以调用方法fun1,那么该怎么处理? 此时,访问权限控制便可以

Java之路(五) 访问权限控制

在Java中,所有事物都具有某种形式的访问权限控制. 访问权限的控制等级从最大到最小依次为:public,protected,包访问权限(无关键词)和private. public,protected和private这几个Java访问权限修饰词在使用时,是置于类中每个成员(域或者方法)定义之前的. 一.类成员的访问权限 取得对某成员的访问权的唯一途径是: 1).使该成员成为public.无论谁在哪里,都可以访问该成员: 2).通过不加访问权限的修饰词并将其他类放置于同一包内的方式给成员赋予包访问

Java编程思想:第6章 访问权限控制

访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关. 很多时候我们需要重构代码使之更可读,更易理解,更具维护性,但是又不能影响到客户端程序员的正常使用.我们根本不知道客户端程序员使用了哪些东西(方法),所以我们也不知道哪些东西可以改,为了解决这个问题,java提供了访问权限修饰词.访问修饰词加上包结构使得构件的捆绑和使用机制非常完善,不产生冲突. 6.1 包:库单元 用包来分隔管理不同的类. 不同包下的类需要导入,就是为了提供一个管理名字空间的机制.package 和 import就是为了解