java中的权限修饰符的理解

首先了解概念:

在java中有四种权限修饰符:范围从大到小分别是:public、protect、default(friendly)、private,它们之间的区别是:

 

  • public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
  • protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
  • default:  这个访问权限可能是很多人容易所忽视的,即不写任何关键字。默认权限(同包权限)即:包内可访问,包外不可访问,不管是子类还是没有继承关系的类。
  • private:  只能在当前类中使用,外部不能访问。

 

 

 

理解:什么是同包与不同包?

这很好理解啊,假如把包看成文件夹,包里面的东西就是文件,在同一个文件夹里面文件的就是同包,看代码:

 1 package a:
 2 //function1声明在a包中
 3 public class function1{
 4    //声明的变量与方法;
 5 }
 6 package b;
 7 //function2声明在b包中
 8 public claass function2{
 9      //声明的变量与方法;
10 }

 

首先说同包,先看一个表(打勾的表示可以访问):

 

作用域

   当前类

  子孙类

  外部类

public

      √

     √

    √

protected

      √

     √

    ×

Default(friendly)

      √

     √

    √

private

      √

     ×

    ×

 结论:在同一个包的前提下,在继承时,子类只能继承父类中的public、protected以及default访问权限的成员变量或方法,并且继承之后,这些成员变量或方法的访问权限和之前的一样,如父类中是public,继承后还是public。

在不同包的情况下,看表:

 

作用域

    当前类

  子孙类

   外部类

public

      √

    √

     √

protected

      √

    √

     ×

Default(friendly)

      √

    ×

     ×

private

      √

    ×

     ×

结论:在不同包的前提下,在继承时,子类只继承父类中的publicprotected访问权限的成员变量或方法作为子类自己的成员变量或方法。

 

posted @ 2016-11-19 11:33  込戲冭氵罙  阅读(4113)  评论(1编辑  收藏  举报