修饰符小谈

2017-04-23  本文已影响0人  hddwsz

在Java中提供了四种访问权限,使用不同的访问权限时,被修饰的内容会有不同的访问权限,以下表来说明不同权限的访问能力:

                                         public        protected         空的(default)       private

同一类中                              √                  √                        √                       √

同一包中(子类与无关类)      √                  √                         √

不同包的子类                       √                  √

不同包中的无关类                √

归纳一下:在日常开发过程中,编写的类、方法、成员变量的访问

       要想仅能在本类中访问使用private修饰;

       要想本包中的类都可以访问不加修饰符即可;

       要想本包中的类与其他包中的子类可以访问使用protected修饰

       要想所有包中的所有类都可以访问使用public修饰。

这里要注意的是,如果类用public修饰,则类名必须与文件名相同。一个文件中只能有一个public修饰的类。

这里着重说说受保护权限pretected.有人说它的用法是:受保护,给子类用

下面代码说明问题:

package com.fenxiang.protecteddemo;

     public classFu {

            protected void pro(){

                   System.out.println("受保护权限的方法");

             }

     }

package com.fenxiang.protecteddemo;

public class Zi extends Fu{

}

package com.fenxiang.demo;

import com.fenxiang.protecteddemo.Zi;

public classDemo {

     public static void main(String[]args) {

              Zi z = new Zi();

              z.pro(); //无法调用Pro方法

      }

}

但是在这里测试类Demo中无法调用Pro方法,所以理解为”给子类用”是有问题的

下面修改后代码:

package com.fenxiang.protecteddemo;

public class Fu {

       protected void pro(){

              System.out.println("受保护权限的方法");

       }

}

package com.fenxiang.protecteddemo;

public class Zi extends Fu{

       public void show(){   //加入show方法,在show方法中调用pro方法

              pro();

       }

}

package com.fenxiang.demo;

import com.fenxiang.protecteddemo.Zi;

public class Demo {

       public static void main(String[]args) {

               Zi z = new Zi();

               z.show();     //调用子类中的show方法

        }

}

修改后编译成功,程序正常运行,输出:受保护权限的方法

所以得到结论:

受保护权限用法:只能在子类中去使用,出去子类,不能使用

上一篇 下一篇

猜你喜欢

热点阅读