`
javacto
  • 浏览: 84108 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

访问控制符

阅读更多

 

         访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限,就像发布的文件一样,在文件中标注机密,就是说明该文件可以被那些人阅读。

         访问控制在面向对象技术中处于很重要的地位,合理的使用访问控制符,可以通过降低类和类之间的耦合性(关联性)来降低整个项目的复杂度,也便于整个项目的开发和维护。具体的实现就是通过访问控制符将类中会被其它类调用的内容开放出来,而把不希望别人调用的内容隐藏起来,这样一个类开放的信息变得比较有限,从而降低了整个项目开放的信息,另外因为不被别人调用的功能被隐藏起来,在修改类内部隐藏的内容时,只要最终的功能没有改变,即使改变功能的实现方式,项目中其它的类不需要更改,这样可以提高了代码的可维护性,便于项目代码的修改。

         Java语言中访问控制权限有4种,使用三个关键字进行表达,依次如下:

<!--[if !supportLists]-->l  <!--[endif]-->public——公共的

<!--[if !supportLists]-->l  <!--[endif]-->protected——受保护的

<!--[if !supportLists]-->l  <!--[endif]-->无访问控制符——默认的

<!--[if !supportLists]-->l  <!--[endif]-->private——私有的

其中无访问控制符是指不书写任何的关键字,也代表一种访问权限,访问控制符的使用示例如下所示:

public class AccessControl {

                  int n;

                  public AccessControl(){

                            init();

                  }       

                  private void init(){}

                   protected void test(int k){}

}

         该示例代码中演示了各个访问控制符的实际使用示例,其中属性n的访问控制符就是默认的。

         在实际使用时,类声明的访问控制符只有2个:public和无访问控制符,属性声明、构造方法声明和方法声明的访问控制符可以是以上4种中的任何一个。

         4个访问控制符的权限作用如下表所示:

访问控制符

同一个类内部

同一个包内部

不同包中的子类

不同包中的非子类

public

Yes

Yes

Yes

Yes

protected

Yes

Yes

Yes

No

无访问控制符

Yes

Yes

No

No

private

Yes

No

No

No

         说明:在该表中,Yes代表具备对应的权限,No代表不具备对应的权限。

         4种访问控制中,public一般称作公共权限,其限制最小,也可以说没有限制,使用public修饰的内容可以在其它所有位置访问,只要能访问到对应的类,就可以访问到类内部public修饰的内容,一般在项目中开放的方法和构造方法使用public修饰,开放给项目使用的类也使用public修饰。protected一般称作继承权限,使用protected修饰的内容可以被同一个包中的类访问也可以在不同包内部的子类中访问,一般用于修饰只开放给子类的属性、方法和构造方法。无访问控制符一般称作包权限,无访问控制符修饰的内容可以被同一个包中的类访问,一般用于修饰项目中一个包内部的功能类,这些类的功能只是辅助其它的类实现,而为包外部的类提供功能。private一般称作私有权限,其限制最大,类似于文件中的绝密,使用private修饰的内容只能在当前类中访问,而不能被类外部的任何内容访问,一般修饰不开放给外部使用的内容,修改private的内容一般对外部的实现没有影响。

         下面以两个基本的示例来说明访问控制符在实际项目中的使用方式。

         第一个使用示例:在项目中,一般不会将类的属性开放给其它的类,也就是不允许外部的类直接访问属性,而是使用对应的存取方法来进行访问。例如在学校的学员管理系统中,需要实现的学生类,按照访问控制符的一般使用规则,实现的代码如下:

                   /**

 * 学员类,演示访问控制符的使用

 */

public class Student {

                            /**年龄*/

                            private int age;

                            /**学员ID*/

                            private int id;

                            public int getAge() {

                                      return age;

                            }

                            public void setAge(int age) {

                                      if(age < 0){

                                               //处理代码,未实现

                                      }

                                      this.age = age;

                            }

                            public int getId() {

                                      return id;

                            }

                            public void setId(int id) {

                                     //校验id是否合法的代码,未实现

                                      this.id = id;

                            }       

}

         通过将属性的访问权限设定为private,限制所有类外部对属性的访问,而为了让外部可以访问这些属性,专门声明对应的get/set方法来读取/存储数据,这样在设置属性值的set方法中,可以对于参数做出基本的校验,在上面的示例代码中,留出了校验参数的位置,具体的代码未在示例代码中实现。

         小技巧:在eclipse中,getset方法可以在选中对应类的代码以后,使用“Source”菜单中的“Generate Getters and Setters…”菜单实现。

         第二个使用示例:在项目中,一般为了设计的需要实现一些特定的功能,下面介绍一下使用访问控制符实现的一个功能——使一个类既不能创建对象也不能被继承。实现的方法如下:该类中只实现一个构造方法,而且将该构造方法的访问权限设置为私有的。具体实现代码如下:

                   /**

 * 不能创建对象且不能被继承的子类

 */

public class PrivateDemo {

                            private PrivateDemo(){}

}

         在该示例中,PrivateDemo类只有一个构造方法,且该构造方法为私有。按照以前的介绍,创建对象时需要调用构造方法,而private修饰的构造方法无法在类的外部进行访问,所以无法创建对象。另外,在子类的构造方法中也需要调用父类的构造方法,由于private的构造方法无法得到调用,所以该类也不可以有对应的子类。

         这里说明的只是两个基本的用途,在实际的项目中,可以根据需要灵活的使用访问控制符实现对应的功能。

         总之,访问控制符通过控制声明的内容的访问权限,实现对于内容的隐藏,从而降低使代码的耦合性降低,降低项目的复杂度,并且方便实际项目中代码的维护。

转自:http://blog.csdn.net/Mailbomb/

分享到:
评论

相关推荐

    java访问控制符.txt

    简要叙述什么是访问控制符,列出Java中的访问控制符,并说明各个访问控制符的控制权限

    as3.0访问控制符

    ### AS3.0中的访问控制符:public、private、protected和internal 在ActionScript 3.0(简称AS3.0)中,访问控制符是用来限制类、成员变量、方法等元素可见性的关键字。合理使用这些关键字可以帮助开发者更好地管理...

    Java类的修饰符、访问控制符

    Java语言中的类修饰符和访问控制符是编程中至关重要的概念,它们决定了代码的组织结构、访问权限和封装性。本实验旨在深入理解和熟练运用这些关键特性。 首先,Java类修饰符包括`public`, `private`, `protected`...

    13_访问控制符_2 视频

    在Java编程语言中,访问控制符是用于定义类、接口、方法或变量的可访问性的关键字。这些控制符决定了其他代码包中的类或模块能否访问特定的类成员。本视频"13_访问控制符_2"深入讲解了Java中的访问控制特性,尤其对...

    Java的访问控制符

    java的访问控制符分为两类:类的访问控制符,属性和方法的访问控制符。  1. 类的访问控制符有两种:public, default(默认的,什么都不用写)  default是包内访问控制符。  当然对于内部类还可以有static修饰,...

    12_访问控制符_1 视频

    在Java编程语言中,访问控制符是用于定义类、接口、方法和变量的可访问性的关键字。这些控制符有助于实现封装,这是面向对象编程的基本原则之一。本视频“12_访问控制符_1”专注于Java中的访问控制,是Java SE(标准...

    JAVA封装的特点、访问控制符.docx

    以下是关于封装特点和Java访问控制符的详细说明: 1. 封装的特点: - **隐藏**:封装的关键在于隐藏对象的内部实现细节,使外部代码无法直接干涉。这样可以避免因为不正确的外部操作导致的数据错误。 - **暴露**...

    【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符

    Java语言的访问控制符是编程时用来控制类、属性、方法和构造器访问权限的关键字。主要有四种:public、protected、默认(不修饰)和private。这些修饰符决定了类的成员在不同范围内的可见性。 1. **public**:公共...

    剖析Java中的访问/非访问控制符以及神奇的main函数

    Java中的访问控制符是编程中用来限制类、接口、字段和方法访问权限的关键字,它们在面向对象的设计中起着至关重要的作用。访问控制符主要包括`private`、默认(无修饰符)、`protected`和`public`,这些控制符决定了...

    【后端】java基础(5.4)java高级基础之java的修饰符——非访问控制符

    上章讲了访问控制符,这章开始讲非访问控制符。 java中的非访问修饰符的作用各不一样,据我所知常用的有六种: static final abstract synchronized volatile transient 今天我们只讲前三种,后面三种等我们讲到线程...

    java修饰符的使用.pdf

    类的修饰符分为访问控制符和非访问控制符两大类。 一、访问控制符 访问控制符是 Java 语言中控制类及类的成员变量和方法的访问权限的修饰符。访问控制符分为四种级别: 1. 公有访问控制符(public):public 修饰...

    C#修饰符

    Java语言中,修饰符也分为可访问控制符和非访问控制符两种。 类的修饰符 * public:公共类修饰符。 * abstract:抽象类修饰符。 * final:最终类修饰符。 域的控制修饰符 * public:公共访问控制符。 * private...

    Java 中的访问权限控制

    在Java编程语言中,访问权限控制是至关重要的概念,它决定了类、接口、字段和方法的可见性。这种控制机制确保了代码的封装性和安全性,防止未经授权的访问和操作。以下是对这一主题的详细探讨: 1. 访问修饰符: ...

    java修饰符的使用[整理].pdf

    根据描述,我们可以详细分析Java中主要的访问控制符和非访问控制符。 1. 访问控制符: - **public**:公共访问控制符,允许任何地方的任何类访问。例如,主类需要是public以便运行程序,且public方法是类的接口,...

    java常用的修饰符

    - **public**: 公共访问控制符,允许任何地方的任何类访问。Java程序的主类必须是public,以便作为程序的入口点。 - **abstract**: 抽象类修饰符,用于声明抽象类。抽象类不能实例化,只能作为其他类的基类。 - *...

    Java习题02类与对象的基本概念.doc

    public 访问控制符表示该成员可以被所有对象访问,private 访问控制符表示该成员只能被类本身访问,protected 访问控制符表示该成员可以被类本身和子类访问,default 访问控制符表示该成员可以被类本身和同包中的...

    java中不同包之间的调用.docx

    Java 中的访问控制符是指在 Java 语言中,控制类、方法、变量的访问权限的关键字。这些关键字包括 public、private、protected、default 等。它们决定了类、方法、变量的可访问性和可继承性。 在 Java 中,访问控制...

Global site tag (gtag.js) - Google Analytics