java 访问权限修饰符(public,private,protected)

时间:2021-12-29 06:21:24

        public,private,protected都是java的权限访问修饰符,在使用时都是置于类中成员(域和方法)的定义之前。在介绍这三个访问权限修饰符之前先介绍一下默认访问权限。默认访问权限没有任何关键字。类和类中的成员不加任何访问权限修饰符就是默认访问权限,默认访问权限通常是包访问权限。如果一个类是默认访问权限,那么只有和这个类在同一个包中的类才有权限访问这个类(也就才能创建这个类)。如果类中的成员是默认访问权限,那么这就意味着在同一个包中的其它类对该类的成员都有访问权限,而对包外的其他所有类,这个字段是private的。类控制着那些代码有访问自己成员的权限,其它类不能一上来就说:“我是你的朋友”,并且还想看到你的protected,private和默认的访问权限修饰的成员。取得对成员的访问权限唯一的途径就是:

   1,使该成员为public,于是,无论是谁,无论在哪里,都可以访问该成员。

   2,通过不加任何访问修饰符将类放置于同一个包内的方式,赋予成员包的访问权限。于是包的其它类都可以访问其中的成员。

   3,一个类(父类)继承另一个类(子类),那么子类可以访问父类的protected成员和public成员,但是不可以访问private成员。

   4,提供get/set方法来提取和改变值。

 

   public(公共的访问权限)

   使用关键在public就意味着public后紧跟着的成员声明自己对每个人都都是可用的。

            package com.zxy.www.A;

            public class A1 {

                     String strA1="my name is A1.";//添加public访问修饰符
            }

 

           package com.zxy.www.B;

           import com.zxy.www.A.A1;

           public class B1 {
                  static A1 a1 = new A1();

                  public static void main(String[] args) {
                 String str= a1.strA1;
            }
     }

     以上两个类中B1中的String str= a1.strA1;编译时会包错,因为A1类中的字段strA1是包访问权限(默认访问权限),B1类和A1不在同一个包中,所以B1不具有访问A1中strA1字段的权限,也就是B1对A1中的strA1不具有包访问权限。如果B1,A1在同一个包中就不会有错,或strA1是public。

  

    private(你无法访问的权限)

    关键在private的意思是,只有包含该成员的类才有权访问它。也就是说这个private成员只能在类中使用。任何其它类都无法访问它。

    protected(继承访问权限)

    如果A包中的类(父类)被B包中的类(子类)继承,那么子类只能访问父类的public和protected成员(当然两类在同一包内执行继承工作,就可以操纵拥有包的访问权限)。protected的作用是父类中的某些特定成员只想让让子类使用。当然protected也提供包访问权限,也就是说即使两个类不存在继承关系,但是在同一个包中是可以访问protected成员的。