java中4种修饰符访问权限的区别及详解全过程

java中4种修饰符访问权限的区别及详解全过程

http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html

java中4中修饰符分别为public、protect、default、private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高。

下面详细讲述下它们的访问权限问题。(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况。)

首先在这里把它们的访问权限表示出来:

访问权限   类   包  子类  其他包

public     ∨   ∨   ∨     ∨

protect    ∨   ∨   ∨     ×

default    ∨   ∨   ×     ×

private    ∨   ×   ×     ×

下面做进一步说明java中4种修饰符访问权限的区别及详解全过程:

工具/原料

  • java运行环境
  • Notepad++

方法/步骤

  1. 首先,说明public的权限问题,定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

    这里要注意:当重写父类成员函数时,子类的成员函数不能比父类的成员函数权限小,一般重写把权限定义相同即可。

    代码如图所示:

  2.  

    上边把类都建好了,然后开始测试,如果均能编译通过,就说明用public修饰的类在本类、同包、子类、其他包中互相访问都是可以的。测试结果如下:(事实证明可以访问)

  3.  

    再来说明protect权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

    这里要注意:public可以修饰任何类而且类名要与文件名相同,protected不可以修饰类。

    Person代码如图所示,其他3个类同上:

  4.  

    同样开始测试protected权限问题,如果Person、People、Student能编译通过,就说明用protected修饰的类在本类、同包、子类中互相访问都是可以的,而Computer编译不通过说明protected不可以在包外没有继承关系的类中互相访问。测试结果如下:

  5.  

    接着说明default权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

    这里要注意:default(不写默认指定default)同public一样可以修饰任何类而且类名要与文件名相同。

    Person代码如图所示,其他3个类同上:

  6.  

    继续开始测试default权限问题,如果Person、People能编译通过,就说明用default修饰的类在本类、同包中互相访问都是可以的,而Student、Computer编译不通过说明default不可以在包外不管有没有继承关系的类都不可以互相访问。测试结果如下:

  7.  

    最后说明private权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。

    这里要注意:private同protected一样不可以修饰类。

    Person代码如图所示,其他3个类同上:

  8.  

    最后测试private权限问题,private意思是私有的,如果Person能编译通过而People、Student、Computer编译不通过,就说明用private修饰的类只能在本类中访问。测试结果如下:

  9.  

    综上所述,java中4种修饰符访问权限的区别及详解全过程就此演示完了,再一次说明java语言的严谨性和安全性,我们在以后使用这4中修饰符时创建一个类,这个类的权限尽量要小,这样才能减少漏洞和提高安全性,从而体现java面向对象的封装性。

    最后如图再回忆一下java中4个修饰符的访问权限:

时间: 2024-11-03 21:07:33

java中4种修饰符访问权限的区别及详解全过程的相关文章

java的四种修饰符访问权限

java的访问修饰符有四种:private.protected.public.default. 这四种访问修饰符的访问权限不一样. 1.private:及私有的,对访问权限限制最窄的修饰符.被private修饰的属性以及方法只能被该类的对象访问.它的子类也不可以访问,更不支持跨包访问. 2.protected:及保护访问权限,是介于public和private之间的一种访问修饰.被protected修饰的属性及方法只能被类本身的方法和子类访问.(子类在不同的包中也可以访问) 3.public:及

java中四种修饰符(private、default、protected、public)的访问权限

权限如下: no. 范围 private default protected public 1 同一包下的同一个类 √ √ √ √ 2 同一包下的不同类 × √ √ √ 3 不同包下的子类 × × √ √ 4 不同包下的非子类 × × × √ 原文地址:https://www.cnblogs.com/linhuanjie/p/9490578.html

关于Java中四种修饰符

private: 只能在同一个类中使用,在类中定义getter和setter,在方法中设置取值范围,在main方法中不能直接调用,只能通过getter和settter方法调用. defau:在同一个类和同一个包中都能使用. protected:在同一个类和同一个包和子类中都能使用. public:在所有类中都能使用. 原文地址:https://www.cnblogs.com/lxp0106/p/11637776.html

Java 有几种修饰符?分别用来修饰什么

4种修饰符 访问权限   类   包  子类  其他包 public     ∨   ∨   ∨     ∨ protect    ∨   ∨   ∨     × default    ∨   ∨   ×     × private    ∨   ×   ×     ×

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用 成员变量(属性)①类中添加成员变量 访问修饰符 类型 变量名 private String name ②实例化对象调用类的构造方法类构造对象,Teacher one = new Teacher(): 有static的可以直接调用,因为static是类级别的 ③JavaBean里边一般规则应该有公共的无参构造应该有符合命名规范的get/set方法 ④对象的回收:没有任何引用指向该对象时,GC会回收 主动回收:对象 = nu

详解Java中的访问控制修饰符(public, protected, default, private)

Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获.如果文章中出现错误,欢迎评论指出,共同交流~ 说在前面:这篇文章只研究Java中访问控制修饰符声明类的变量/方法的情况. 先抛出结论: * 成员变量/方法的访问权限 *                                        private        default  

Java中的类修饰符

资料主要来源于网络(http://60.28.60.3/zy/java-new/zhishidian/chap3/3.htm) 之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这样比较规范,可主要原因是我是在不知道怎么在一个文件里放多个类,可见java基础有多差了...只要把类的属性改成默认的就可以了,也就是前面什么控制符都不加,采用默认的方式. Java语言程序设计中,定义类时除了要使用class 关键字说明所定义的数据类型是类,还可以在 class 之前增加若干类的修饰

java 中的 final修饰符

修饰符final:是常量,不允许改变 ,可以修饰 变量,方法 ,类 final修饰变量:被final修饰的变量就会变成常量,一旦赋值不能改变 常量可以在初始化时直接赋值,也可以在构造方法里赋值,只能在这两种方法里二选一,不能不为常量赋值 常量不会有默认初始值 锁定栈,使栈中的数据不可以改变 静态常量只能在初始化时直接赋值 final修饰方法:被final修饰的方法将不能被其子类覆盖,保持方法的稳定不能被覆盖 final修饰类:被final修饰的类将不能被继承          final类中的方

java中訪问修饰符

较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 (同c++) 2)默认 对本包可见/包内訪问 (c++没有) 3)protected 对本包和全部子类可见 (c++中没有本包概念.较 默认訪问 能够被在其它包下的子类訪问) 4)public 对全部类可见 (同c++) 当中1)4)与c++同样,对2)3)做简单測试 3)protected 对本包