通過兩個程序包對自身或互相之間的訪問,得到結果.(先編譯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; }}新聞熱點
疑難解答