你的位置:首页 > Java教程

[Java教程]访问权限系列一(public/private/protected/default):成员变量

通过两个程序包对自身或互相之间的访问,得到结果.(先编译Test_01,得到class文件,通过Test的集中访问情况)如下Test.java中内容:package com.java;/*  * 关于成员变量多种情况下的访问权限: * ------------------------------------------------------------------------------ *                public   private   protected    default *  1 同一个包,同一个类      可以     可以     可以      可以 * *  2 同一个包,不同的类      可以    不可以    可以      可以 * *  3 不同的包里的类        可以    不可以    不可以     不可以 * *  4 同一个包里有继承关系的类   可以    不可以    可以      可以 * *  5 不同的包里有继承关系的类   可以    不可以    可以      不可以 *-------------------------------------------------------------------------------- * 结论: public都可以访问; private只有在同一个类里才能直接访问; protected同一个包里可以访问,若想跨包访问,必须有继承关系; default只有同一个包里的可以访问; * */import cn.java.Test_01;import cn.java.test_02;//public class Test{ //这里1,2,3用;---->1不用实验public是公开的,都可以;public class Test extends Test_01{ //这里4,5用;  public static void main(String[] args){    /*-------------------------2---------------------------    A T = new A();//同一个包,不同的类;    System.out.println( T.m_1() );    System.out.println( T.m_2() );    System.out.println( T.m_3() );    System.out.println( T.m_4() );// 报错:m_4()可以在A中访问private    */    /*-------------------------3---------------------------    Test_01 T = new Test_01();//不同的包里的类,没有继承关系;    System.out.println( T.m_1() );//可以    System.out.println( T.m_2() );//报错:m_2在Test_01里不是公共的,无法从外部程序包中访问;    System.out.println( T.m_3() );//不可以    System.out.println( T.m_4() );//不可以    */    /*-------------------------4----------------------------    A T = new A();//同一个包里的不同类,有继承关系;    System.out.println( T.m_1() );//可以    System.out.println( T.m_2() );//可以    System.out.println( T.m_3() );//可以    System.out.println( T.m_4() );//报错: 可以在类A中访问;    */    /*-------------------------5----------------------------    Test T = new Test();    System.out.println( T.m_1() );//可以    System.out.println( T.m_2() );//m_2不是公共的,无法从外部程序包中访问;    System.out.println( T.m_3() );//可以    System.out.println( T.m_4() );//可以在Test_01中访问;    */  }}class A{  public int m_1(){return 1;}  int m_2(){return 1;}  protected int m_3(){return 1;}  private int m_4(){return 1;}}
如下是Test_01.java的内容:package cn.java;
public class Test_01{ //成员变量 public int i_1 = 100; int i_2 = 200;//默认default protected int i_3 = 300; private int i_4 = 400; //成员方法 public int m_1(){ return 1; } int m_2(){ return 1; } protected int m_3(){ return 1; } private int m_4(){ return 1; }}