精华内容
下载资源
问答
  • java访问控制符
    2021-03-16 12:37:01

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

    访问控制在面向对象技术中处于很重要的地位,合理的使用访问控制符,可以通过降低类和类之间的耦合性(关联性)来降低整个项目的复杂度,也便于整个项目的开发和维护。

    具体的实现就是通过访问控制符将类中会被其它类调用的内容开放出来,而把不希望别人调用的内容隐藏起来,这样一个类开放的信息变得比较有限,从而降低了整个项目开放的信息,另外因为不被别人调用的功能被隐藏起来,在修改类内部隐藏的内容时,只要最终的功能没有改变,即使改变功能的实现方式,项目中其它的类不需要更改,这样可以提高了代码的可维护性,便于项目代码的修改。

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

    l public——公共的

    l protected——受保护的

    l 无访问控制符——默认的

    l private——私有的

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

    public class AccessControl {

    int n;

    public AccessControl(){

    init();

    }private void init(){}

    protected void test(int k){}

    }

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

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

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

    访问控制符同一个类内部同一个包内部不同包中的子类不同包中的非子类publicYesYesYesYesprotectedYesYesYesNo无访问控制符YesYesNoNoprivateYesNoNoNo

    说明:在该表中,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中,get和set方法可以在选中对应类的代码以后,使用“Source”菜单中的“Generate Getters and Setters…”菜单实现。

    第二个使用示例:在项目中,一般为了设计的需要实现一些特定的功能,下面介绍一下使用访问控制符实现的一个功能——使一个类既不能创建对象也不能被继承。

    实现的方法如下:该类中只实现一个构造方法,而且将该构造方法的访问权限设置为私有的。具体实现代码如下:

    /**

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

    */

    public class PrivateDemo {

    private PrivateDemo(){}

    }

    在该示例中,PrivateDemo类只有一个构造方法,且该构造方法为私有。

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

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

    全部

    更多相关内容
  • Java访问控制符

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

    万次阅读 多人点赞 2018-01-05 14:21:58
    Java提供了4种访问控制符,主要用于控制其他类是否可以访问某一类中的属性或方法,从而实现数据封装。四种访问控制符的权限大小(由大到小)为public(公共)、protected(保护)、default(默认)、 private(私有)。 ...

    Java提供了4种访问控制符,主要用于控制其他类是否可以访问某一类中的属性或方法,从而实现数据封装。四种访问控制符的权限大小(由大到小)为public(公共)、protected(保护)、default(默认)、 private(私有)。

    private(私有):当类中属性或方法被private修饰时,表示此成员或方法只能被自己类中的方法使用,而不能被外部类或对象直接使用。例如:

    public class PersonDemo {
    	public static void main(String[] args) {
    		Person person = new Person();
    		//person.name = "张三";//不能访问Person类中的私有属性
    		//person.fun();//不能访问Person类中的私有方法
    	}
    	
    }
    
    class Person {
    	private String name = "";
    	
    	private void fun() {
    		System.out.println(this.name);//可以访问自己类中的私有属性
    	}
    	
    	public void fun1() {
    		fun();//可以访问自己类中的私有方法
    	}
    }
    
    default(默认):具有包访问权限,如果类中属性或方法不使用public,protected,privete修饰符修饰时,则说明其具有包访问权限,具有包访问权限的属性或方法既可以被自己类中的方法使用也可以被同一包下的其他类使用,但不能被其他包中的类使用。例如:
    package com.person.test;
    
    public class PersonDemo {
    	int age;
    	
    	public void fun() {
    		System.out.println(this.age);//可以访问自己类中的默认属性
    	}
    }
    
    
    
    package com.person.test;
    
    public class ManagerDemo {
    	public static void main(String[] args) {
    		PersonDemo personDemo = new PersonDemo();
    		personDemo.age = 18;//可以访问同一包下类中的默认属性
    	}
    }
    
    
    
    package com.student.test;
    
    import com.person.test.PersonDemo;
    
    public class StudentDemo {
    	public static void main(String[] args) {
    		PersonDemo personDemo = new PersonDemo();
    		//personDemo.age = 18;//不能访问不同包下类中的默认属性
    	}
    }
    protected(保护):具有子类访问权限。如果类中属性或方法被protected修饰符修饰,则此类中属性或方法可以被同一包下的类使用,也可以被不同包下的子类使用,但不能被不同包下的其他类使用。例如:

    package com.person.test;
    
    public class PersonDemo {
    	protected int age;
    }
    
    
    
    package com.student.test;
    
    import com.person.test.PersonDemo;
    
    public class SubDemo extends PersonDemo{
    	public static void main(String[] args) {
    		SubDemo subDemo = new SubDemo();
    		subDemo.age = 18;//保护属性被不同包下的子类使用
    	}
    }
    
    
    
    package com.student.test;
    
    import com.person.test.PersonDemo;
    
    public class StudentDemo {
    	public static void main(String[] args) {
    		PersonDemo personDemo = new PersonDemo();
    		//personDemo.age = 18;//保护属性不能被其他包中的类使用
    	}
    }
    public(公共):具有公共访问权限。如果类中的属性或方法被public修饰,则此类中的属性或方法可以被任何类调用。

    总结:

    四种访问控制权限如下("+"号表示有访问权限, "-"号表示没有访问权限):




    展开全文
  • java访问控制符详解

    2020-05-21 20:54:41
    java提供了3个访问控制符:private、protected和public,分别代表3个访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,提供了4个访问控制级别。 访问权限由小到大:private——>default——>...

    使用访问控制符

    java提供了3个访问控制符:private、protected和public,分别代表3个访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,提供了4个访问控制级别。

    访问权限由小到大:private——>default——>protected——>public
    注意没有default这个关键字,不写则默认代表此访问权限

    private(当前类访问权限)

    如果类里的一个成员(包括Field、方法和构造器等)使用private访问控制符来修饰,则这个成员只能在当前类的内部被访问。很显然,这个访问控制符用于修饰Field最合适,使用它来修饰Field就可以把Field隐藏在该类的内部。

    这个概念大家应该没什么异议

    default(包访问权限)

    如果类里的一个成员(包括Field、方法和构造器等)或者一个外部类不使用任何控制符修饰,我们就称它是包访问权限,default访问控制的成员或外部类可以被相同包下的其他类访问。

    何为包 package
    java引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。

    java规定:位于包中的类,在文件系统中也必须有与包名层次相同的目录结构
    假设某个应用中包含两个Hello类,java通过引入包机制来区分两个不同的Hello类。不仅如此,这两个Hello类还对应两个Hello.class文件,它们在文件系统中也必须分开存放才不会引起冲突。

    所以java的包机制需要两个方面保证:
    1.源文件里使用package语句指定包名;
    2.class文件必须放在对应的路径下。

    package语句必须作为源文件的第一条非注释性语句,一个源文件只能指定一个包,即只能包含一条package语句,该源文件中可以定义多个类,则这些类将全部位于该包下

    java默认为所有源文件导入java.lang包下的所有类,因此在java程序中使用String、System类时都无须使用import语句来导入这些类

    也就是说java中要使用其他包中类时需要导入对应类的包或者指定该类的全限定名,如果是在同一包下则可以直接使用同一包下的类

    再回到default包访问权限问题上,就拿class来说
    先在com.sunrise.eHealth.day0521.other包下定义一个HelloWorld 类,该类的权限为default

    package com.sunrise.eHealth.day0521.other;
    
    class HelloWorld {
    }
    

    在这里插入图片描述
    在com.sunrise.eHealth.day0521包下Demo1类中引入HelloWorld,发现导入了HelloWorld 类所在包,仍然报错,即验证了default权限的类不能在其它包中使用

    package com.sunrise.eHealth.day0521.other;
    
    public class Dog {
    
        public static void main(String[] args) {
            HelloWorld hw = new HelloWorld();
        }
    
    }
    

    在相同包下则可以使用HelloWorld类,并且不用import相应包

    protected(子类访问权限)

    如果一个成员(包括Field、方法和构造器等)使用protected访问控制符修饰,那么这个成员既可以被同一个包中的其他类访问,也可以被不同包中的子类访问。在通常情况下,如果使用protected来修饰一个方法,通常是希望其子类来重写这个方法。

    package com.sunrise.eHealth.day0521.other;
    
    public class Animal {
    
        protected void info(){
            System.out.println("i am animal");
        }
    
    }
    

    由于外部类的访问控制符只能是public 或者 default(不加访问控制符),不能使用private和protected修饰,因为外部类没有处于任何类的内部,也就没有所在类的内部、所在类的子类两个范围,所以上面代码在方法前加上protected访问控制符,在相同包下调用info方法显然是没有问题的,但是在其它包下则无法调用info方法
    在这里插入图片描述
    除非该类继承Animal,然后通过子类去访问info方法

    public class Demo2 {
    
        public static void main(String[] args) {
            Monkey m = new Monkey();
            m.eat();
    
        }
    
    }
    
    class Monkey extends Animal{
    
        public void eat(){
            this.info();
        }
    
    }
    

    有此可以看出Monkey 子类可以访问info方法,通常情况下,如果使用protected来修饰一个方法,通常是希望其子类来重写这个方法。
    有人可能要说希望子类重写何不将父类方法定义为abstract抽象方法呢?
    方法定义为abstract是强制让子类重写,而且父类变为抽象类或者接口,不能直接使用父类,也限制了子类必须要重写该方法,只能说侧重点不一样吧

    public(公共访问权限)

    这是一个最宽松的访问控制级别,如果一个成员(包括Field、方法和构造器)或者一个外部类使用public访问控制符修饰,那么这个成员或外部类就可以被所有类访问,不管访问类和被访问类是否处于同一个包中,是否具有父子关系。

    注意:

    要使用不同包下的类,必须要先import该类所在包(不导入包则要写全限定名),然后再看访问控制权限,如果是public修饰的类则可以访问,如果是default即没有public修饰的类则不可以访问(即使已经导入了该类所在包)

    附上访问控制级别图

    在这里插入图片描述

    如果一个java源文件里定义的所有类都没有使用public修饰,则这个java源文件的文件名可以是一切合法的文件名;但如果一个java源文件里定义了一个public修饰的类,则这个源文件的文件名必须与public修饰的类的类名相同

    展开全文
  • java访问控制符.txt

    2011-08-13 13:58:09
    简要叙述什么是访问控制符,列出Java中的访问控制符,并说明各个访问控制符的控制权限
  • Java访问控制符

    2022-01-12 13:22:35
    Java访问控制符Java 提供了三个访问控制符:private、protected 和 public ,另外还有一个不加任何访问控制符的访问控制级别。 其四种访问级别关系由小到大为 private->default->protected->public ...

    Java 的访问控制符

    ​ Java 提供了三个访问控制符:private、protected 和 public ,另外还有一个不加任何访问控制符的访问控制级别。

    其四种访问级别关系由小到大为 private->default->protected->public

    • private 访问控制级别:如果一个成员使用该控制符来修饰,则这个成员只能在该类的内部被访问。通常用于修饰属性,使用 private 来修饰属性可以把属性隐藏在类的内部。
    • default 访问控制级别(包访问权限):若一个成员不适用任何控制修饰符,则称它为默认访问控制,default 访问控制成员可被相同包下其它类访问。
    • protected 访问控制权限(子类访问权限):被修饰的成员既可被同一个包中其他类访问,也可被不同包中的子类访问。一般情况下,如果使用 protected 修饰一个方法,通常是希望其子类来重写这个方法。
    • public 访问控制权限(公共访问权限):是最宽松的访问控制级别,被 public 修饰的成员可被所有类访问。

    对以上所述用表格来表示的话,便是这个样子的:

    在这里插入图片描述
    作为 Java 的学习者,有关访问控制符的使用原则务必了解:

    • 类中的绝大部分属性都应该使用 private 修饰,除了一些 static 修饰的、类似全局变量的属性。还有一些方法只是用于辅助实现该类的其他方法,这些方法被称为工具方法,工具方法也应该使用 private 修饰。
    • 若某个类主要用于其他类的父类,该类里包含大部分方法可能仅希望子类进行重写,而不想被外界调用,则应该使用 protected 修饰这些方法。
    • 希望暴露出来给其他类自由调用的方法应该使用 public 修饰。
    展开全文
  • java的控制符可分为两大类,一种是访问控制符,另一种是非访问控制符。我们上文提到的public,private便是访问控制符了。 访问控制符访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限 ...
  • JAVA的四种访问控制符

    2021-01-10 10:39:25
    JAVA的四种访问控制符 JAVA的四种访问控制符分别为public,默认访问权限,protected和private四种,而访问权限也是逐级递减。 public 首先说说public的权限,public的访问权限是四种控制符中权限最大的,它所定义的...
  • 文章目录前言特性中的继承访问控制符成员访问控制符private默认protectedpublic类的访问控制符访问控制符static静态域静态方法finalfinal类final方法final字段和局部变量main()方法 你好,我是goldsun。 你有想法...
  • 深入理解Java中的访问控制符

    千次阅读 2016-08-14 10:15:37
    2、Java访问控制符的具体用法(详解)1、简述Java中包的概念Java中的包类似于操作系统中的文件夹,将具有类似功能的类或者相同的类放在相同的包里面,便于组织与管理. 如:若一个类专门用于数据传输,将这个类放在...
  • Java访问控制符权限范围

    千次阅读 2018-11-27 11:24:30
    Java访问控制符权限范围如下表所示,其中要注意的是“protected”。被这个访问控制符修饰的属性或方法也能被同一个包内非继承关系的类所访问。  ...
  • 上章讲了访问控制符,这章开始讲非访问控制符java中的非访问修饰符的作用各不一样,据我所知常用的有六种: static final abstract synchronized volatile transient 今天我们只讲前三种,后面三种等我们讲到线程...
  • 以下是对Java中的访问修饰进行了详细的分析介绍,需要的朋友可以过来参考下
  • public:具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。protected:主要的作用就是用来保护子类的。它的含义在于子类可以用它...
  • 本篇文章总结一下Java访问修饰,虽然这样的总结在网上已经有很多了,但是作为基础部分,还是要亲自总结一下,才能加深记忆。 文章目录1. 访问修饰有哪些,可以用在什么地方2. 类 1. 访问修饰有哪些,可以用...
  • Java访问控制权限有哪些?区别是什么?时间:2017-10-26来源:华清远见Java培训中心Java中的类和方法等都是有访问控制权限的,用来控制方法、类、属性等的生效范围,Java有四种访问控制权限,其中比较常用的就是...
  • 主要介绍了Java import导入及访问控制权限修饰过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java-------类成员的访问控制符 类成员的访问控制符有public、private、protected及无修饰符 1)public:表示共有的,也就是它可以被其他任何对象访问。 2)private:类中限定为private的成员只能被这个类本身访问,...
  • 本篇文章给大家详细分析了Java四种访问控制修饰的相关知识点,有兴趣的朋友可以参考学习下。
  • Java访问修饰符(访问控制符

    千次阅读 2019-06-14 21:29:57
    Java 通过修饰控制类、属性和方法的访问权限和其他功能,通常放在语句的最前端。例如: publicclassclassName{ // body of class } privatebooleanmyFlag; staticfinaldoubleweeks=9.5; ...
  • java 访问控制符

    千次阅读 2007-04-18 15:27:00
    对于类:默认的:可以在同一个包中的其它类中被访问,在同一个包中被其它的类所继承。public:可以在任何一个包中的任何一个类中被访问和继承。//----------------------------------------------------------------...
  • Java访问控制符总结

    千次阅读 2012-12-26 15:04:35
    Java中有两个级别的访问控制符。 类级别:控制其他类能否使用该类。有2中类型: public 和 package-private成员级别:控制某一方法、变量的访问权限。有4种类型: public , protected, package-privat
  • )封装的特点: 主要讲述封装与暴露 2)访问控制符 主要讲述private、不写、protected、public 3)指定原则:
  • Java访问修饰

    2013-09-23 21:32:11
    Java 访问修饰 public protected private
  • 实验目的 理解掌握Java类修饰符、访问控制符等;理解熟悉String类的equals方法和= =运算符;进一步熟悉面向对象基本概念;熟悉Java中对象声明、创建、访问、参数传值等基本语法;
  • 主要介绍了Java访问修饰与变量的作用域讲解,是Java入门学习中的基础知识,需要的朋友可以参考下
  • 下面要给大家介绍到的就是java访问控制修饰符方面的知识,主要介绍了public、private、protected和friendly的内容,一起来了解一下吧。访问控制符是一组限定类、属性或方法是否可以被程序里的其他部分访问和调用的...
  • java四种访问修饰

    千次阅读 2022-02-15 17:43:20
    定义:Java中,可以使用访问修饰来保护对类、变量、方法和构造方法的访问Java 支持 4 种不同的访问权限。 分类 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类) default (即缺省...
  • java访问控制符之一目了然

    千次阅读 2013-09-15 21:47:04
    访问控制符 同类 同包子类 同包其他类 不同包子类 不同包其它类 public  √  √  √  √  √ protected  √  √  √  √   default  √  √  √     private  √

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 224,446
精华内容 89,778
关键字:

java访问控制符