JAVA中的訪問修飾符和包


一、JAVA訪問修飾符

訪問修飾符,用來控制類中成員的可見性

有四個訪問修飾符,分別是:default,private,public,protected

1、default(默認):默認權限,不用寫的。在同一包內訪問。

2、private(私有):只能在同一類中訪問。

3、public(公有):在任何地方都可以訪問

4、protected(受保護的):子父類(即使子父類不在同一包)和本包中可訪問。

 public > protected > default > private

 

      public   protected   default   private

同一類       ok        ok      ok        ok
同一包     ok        ok      ok
子類      ok        ok
不同包     ok

 

二、包package

在大型項目中,往往會有幾十甚至幾百個類,如果不對類進行分類管理,后期進行維護時會有很大的不便。

所以,需要對類(或其它類型)進行分類組織管理,這種機制就稱為“包”。

“包”是類的容器,用於分隔類名空間。如果沒有指定包名,所有的示例都屬於一個默認的無名包。

 

包的作用:

1、區分相同名字的類。同一包中的類,不能同名。但是不同包的類,可以同名。

2、當類很多時,方便管理。

3、控制訪問范圍。 

 

 包名命令規范

 包名關鍵字package,包名一律都小寫

 

JAVAC編譯方式:

當定義包時,JAVAC編譯命令:javac+源文件目錄+java源文件名

如果是在源文件當前目錄生成包和文件: javac -d  . +java源文件名   (.點代表當前目錄)

如下文件

package pack;

class PackageDemo
{
    public static void main(String[] args)
    {
        System.out.println("Hello Package");
    }
}

保存在 D:\java0217\day10

javac編譯命令:

javac -d d:\java0217\day10 PackageDemo.java

javac -d . PackageDemo.java

訪問用java 包名.類名

 

如果要將class文件生成在指定的目錄,JAVAC編譯命令:javac+-d+指定生成目錄+java源文件名

D:\myclass目錄中生成類文件,javac -d d:\myclass PackageDemo.java

再設置類目錄  set classpath=d:\myclass,即可訪問

 

 

 

 

包之間的訪問:

訪問不同包中的class,需要導入包import

如下,定義一個新的Job類,並且將Job類放在study包內

package study;    //定義study包

public class Job {        //包中定義Job類
    public String jobName;
    public void show(){
        System.out.println(jobName);
    }
}

然后在包中訪問這個job類時,需要import導入study包中的job類:

import study.Job;    //導入study中的Job類

public class MyTest {
    public static void main(String[] args) 
    {
        Job myJob=new Job();    //實例化Job類
        myJob.jobName="工程師";    //調用類的成員屬性
        myJob.show();                     //調用類的成員方法      
    }
}

輸出結果:

工程師

 

進一步說明:按以上導入包類的方法,如果study包中定義了N侈個類,則每次實例化不同類的對象時,都需要寫import study.xxxx,如有100個類就要寫100次import,較麻煩

我們可以用星號*代替包中的所有類名,一次性導入包中的所有類——import study.* 

import study.*;        //一次性導入study包中的所有類

public class MyTest {
    public static void main(String[] args) 
    {
        Job myJob=new Job();
        myJob.jobName="工程師";
        myJob.show();
    }
}    

注:

同一包中的類,不但表示其在同一包容器中,同時,還處於同一物理路徑中。

定義class時,建議都要設置package,盡量不要放在默認包中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM