Java中,权限修饰符的权限测试

=============================================================================

1、

 1 /*
 2     权限修饰符的权限测试:
 3
 4         权限修饰符        本类中    同一个包下的子类和无关类    不同包下的子类    不同包下的无关类
 5         private          Yes      No                       No              No
 6         默认              Yes      Yes                      No              No
 7         protected        Yes      Yes                      Yes             No
 8         public           Yes      Yes                      Yes             Yes
 9 */
10
11 package com.liuyi;
12
13 class Father {
14     private void show() {
15         System.out.println("show");
16     }
17
18     void show2() {
19         System.out.println("show2");
20     }
21
22     protected void show3() {
23         System.out.println("show3");
24     }
25
26     public void show4() {
27         System.out.println("show4");
28     }
29
30     public static void main(String[] args) {
31         Father f = new Father();
32             f.show();
33             f.show2();
34             f.show3();
35             f.show4();
36         }
37 }

在本类中,测试结果为:

=============================================================================

2、

 1 /*
 2     权限修饰符的权限测试:
 3
 4         权限修饰符        本类中    同一个包下的子类和无关类    不同包下的子类    不同包下的无关类
 5         private         Yes       No                       No              No
 6         默认             Yes       Yes                      No              No
 7         protected       Yes       Yes                      Yes             No
 8         public          Yes       Yes                      Yes             Yes
 9 */
10
11 package com.liuyi;
12
13 class Father {
14     private void show() {
15         System.out.println("show");
16     }
17
18     void show2() {
19         System.out.println("show2");
20     }
21
22     protected void show3() {
23         System.out.println("show3");
24     }
25
26     public void show4() {
27         System.out.println("show4");
28     }
29 }
 1 package com.liuyi;
 2
 3 class Son extends Father {
 4     public static void main(String[] args) {
 5         Father f = new Father();
 6         //f.show();
 7         f.show2();
 8         f.show3();
 9         f.show4();
10         System.out.println("--------------");
11
12         Son s = new Son();
13         //s.show();
14         s.show2();
15         s.show3();
16         s.show4();
17     }
18 }

在同一包下的子类中,测试结果为:(注意:在子类代码中分别测试了父类和子类)

=============================================================================

3、

 1 /*
 2     权限修饰符的权限测试:
 3
 4         权限修饰符        本类中    同一个包下的子类和无关类    不同包下的子类    不同包下的无关类
 5         private         Yes       No                       No              No
 6         默认             Yes       Yes                      No              No
 7         protected       Yes       Yes                      Yes             No
 8         public          Yes       Yes                      Yes             Yes
 9 */
10
11 package com.liuyi;
12
13 class Father {
14     private void show() {
15         System.out.println("show");
16     }
17
18     void show2() {
19         System.out.println("show2");
20     }
21
22     protected void show3() {
23         System.out.println("show3");
24     }
25
26     public void show4() {
27         System.out.println("show4");
28     }
29 }
 1 package com.liuyi;
 2
 3 class Test {
 4     public static void main(String[] args) {
 5         Father f = new Father();
 6         //f.show();
 7         f.show2();
 8         f.show3();
 9         f.show4();
10     }
11 }

在同一包下的无关类中,测试结果为:

=============================================================================

4、

 1 /*
 2     权限修饰符的权限测试:
 3
 4         权限修饰符        本类中    同一个包下的子类和无关类    不同包下的子类    不同包下的无关类
 5         private          Yes      No                       No              No
 6         默认              Yes      Yes                      No              No
 7         protected        Yes      Yes                      Yes             No
 8         public           Yes      Yes                      Yes             Yes
 9 */
10
11 package com.liuyi;
12
13 public class Father {
14     private void show() {
15         System.out.println("show");
16     }
17
18     void show2() {
19         System.out.println("show2");
20     }
21
22     protected void show3() {
23         System.out.println("show3");
24     }
25
26     public void show4() {
27         System.out.println("show4");
28     }
29 }
 1 package cn.qx;
 2
 3 import com.liuyi.Father;
 4
 5 public class Son2 extends Father {  //Father在com.liuyi中不是公共的,无法从外部程序包中对其进行访问,需要在class Father前面加public修饰。
 6     public static void main(String[] args) {  //为了简便起见,以后所有的类的前面都加public修饰。
 7         Father f = new Father();
 8         //f.show();
 9         //f.show2();
10         //f.show3();
11         f.show4();
12         System.out.println("--------------");
13
14         Son2 s = new Son2();
15         //s.show();
16         //s.show2();
17         s.show3();
18         s.show4();
19     }
20 }

在不同包下的子类中,测试结果为:(注意:在子类代码中分别测试了父类和子类)

=============================================================================

5、

 1 /*
 2     权限修饰符的权限测试:
 3
 4         权限修饰符        本类中    同一个包下的子类和无关类    不同包下的子类    不同包下的无关类
 5         private         Yes       No                       No              No
 6         默认             Yes       Yes                      No              No
 7         protected       Yes       Yes                      Yes             No
 8         public          Yes       Yes                      Yes             Yes
 9 */
10
11 package com.liuyi;
12
13 public class Father {
14     private void show() {
15         System.out.println("show");
16     }
17
18     void show2() {
19         System.out.println("show2");
20     }
21
22     protected void show3() {
23         System.out.println("show3");
24     }
25
26     public void show4() {
27         System.out.println("show4");
28     }
29 }
 1 package cn.qx;
 2
 3 import com.liuyi.Father;
 4
 5 class Test2 {
 6     public static void main(String[] args) {
 7         Father f = new Father();
 8         //f.show();
 9         //f.show2();
10         //f.show3();
11         f.show4();
12     }
13 }

在不同包下的无关类中,测试结果为:

=============================================================================

原文地址:https://www.cnblogs.com/chenmingjun/p/8456457.html

时间: 2024-08-25 00:18:01

Java中,权限修饰符的权限测试的相关文章

Java中的修饰符

在java中,修饰符分为访问权限修饰符和非访问权限修饰符.可以被修饰符修饰的java语言元素有类,变量,方法和接口.下面分别描述在这四个元素上使用修饰符的作用. 类 java中声明类的格式为: 访问修饰符 修饰符 class 类名 extends 父类名称 implements 接口名称{} 其中访问修饰符和修饰符可以互换位置,可以应用于类的访问修饰符为public和package,public表明类可以被任何类使用.package表示包访问权限,它是默认的访问权限,可以省略这个修饰符,使用pa

Java中访问修饰符public、private、protecte、default

Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅可以跨类访问,而且允许跨包(package)访问.private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以 及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问.protect: 介于public 和 private 之间的一种访问修饰符,一

Java中各种修饰符与访问修饰符

Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 修饰符 名称 说明 备注 final 使用此修饰符的类不能够被继承 abstrac

java学习笔记(三)java中的修饰符abstract、static与final

一.四种访问级别的访问范围 访问级别 访问修饰符 同类 同包 子类 不同的包 公开 public 受保护 protected 默认 没有访问修饰符 私有的 private 二.使用abstract修饰符需要遵守的语法规则 1.抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰: 2.抽象类跟抽象方法不能被final修饰符修饰: 3.抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法: 4.

java中Volatile修饰符的含义

在java语言中:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值进行对比. volatile关键字的作用就是提示vm:对于这个成员变量不能保存它的私有拷贝,而应直接与共享变量进行交互. 被volatile修饰符修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值.而且,当成员变量发生变化时,又强迫线程将变化了的值写回共享内存,这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值.这样当多个线程同时与某个

Java中final修饰符深入研究

一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很多Java程序员来说,他们大都只是草草看了一下各种书本上的介绍,然后背下来,什么时候想起 来有这东西就用一下.对于何时使用final修饰符.使用final修饰符对程序有什么影响,这些其实他们并不知道,当然在这篇文章之前,我也是一知半解的. 我们书本上对final的描述大概有三种用法: final可以修饰变量,

【转载】Java中各种修饰符与访问修饰符的说明

转:http://handbook.blog.163.com/blog/static/837295522010889212296/ 类: 访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和publi

8)关于Java中各种修饰符与访问修饰符的说明

?1> 类 ? 访问修饰符??修饰符??class?类名称?extends?父类名称?implement?接口名称 (访问修饰符与修饰符的位置可以互换) ? 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 private 修饰内部类 ? ? 修饰符 名称 说明 备注 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 对本包可见