天天看點

黑馬程式員_内部類和包

------- android教育訓練、java教育訓練、期待與您交流!--------- 

内部類

将一個類定義在一個類的裡面,這個類稱為内部

為什麼會出現内部類?

描述事物時,當這個事物的内部還有事物,該事物就用内部類來描述,因為内部事物在使用外部事物

内部類之是以可以直接通路外部類中的成員,包括私有

是因為内部類持有了外部類中的引用,格式:外部類名.this

外部類要通路内部類,必須要建立内部類對象

1 當内部類定義在外部類成員位置,而且非私有,可以在外部其他類中直接建立内部類 對象

格式:外部類名.内部類名 變量名=外部類對象.内部類對象;

     Outer.Inner inr=new Outer().new Inner();

2 當内部類在成員位置上,就可以被成員修飾符所修飾

比如,private:将内部類在外部類中進行封裝.

          static:内部類就具備static的特性.

          當内部類被static修飾後,隻能直接通路外部類中的static成員

在外部類中如何直接通路static内部類的非靜态成員呢?

         new Outer.inner().function();

在外部其他類中,如何直接通路static内部類的靜态成員呢?

       uter.inner.function();

注意:當内部類中定義了靜态成員,該内部類必須是靜态的

         當外部類的靜态方法要通路内部類時,該内部類也必須是靜态的

           外部類要直接通路内部類中的成員時,要把内部類定義為靜态才行,因為外部類是先于内部類出現的

/*
内部類通路的練習
*/
 
class Outer
{
         int num=3;
        
         public void out()
         {
         System.out.println(Inner.num);
         }
 
         //定義一個内部類
         static class Inner
         {
         static int num=5;
 
         public void inn()
         {
         //列印外部類的num
         System.out.println(num);
 
         //列印内部類的num
         System.out.println(num);
         }             
 
 
        
         }   
}
 
class OutInDemo
{
         public static void main(String[] args)
         {
         //Outer.Inner out=new Outer().new Inner();
         System.out.println(Outer.Inner.num);
         Outer out=new Outer();
         out.out();
         }
}
           

 包package

  對類檔案進行分類管理,給類提供多層命名空間

  寫在程式檔案的第一行

  類名的全稱是  包名.類名

  包名也是一種封裝形式

  編譯的時候:javac -d 要存放的檔案夾路徑 類名.java

  運作的時候:java 包名.類名

  要存放的檔案夾路徑:.表示存在目前檔案夾

不同包之間通路,類一定要public,函數也要public

不同包之間,函數加了protectde隻有子類才能通路

1 關鍵字import用來導入包

  import packb.*  表示導入packb檔案夾下面的類

  在類名上面導入了包,建立對象時就不用重複寫包名了,但是當導入的包裡面有同名的類時,要在類名前寫上包名

2 把包壓縮:jar

  切換到包所在的檔案夾

  壓縮:    jar -cf haha.jar pack packa packb

  -cf為建立一個檔案夾并指定檔案夾的名稱

  haha.jar把包壓縮後存放的地方

  pack packa packb是包

  運作haha.jar裡面的類檔案: 先指定classpath路徑,多了一層haha.jar

  setclasspath=c:\myclass\haha.jar

  運作:java pack.PackDemo

  解壓包:  jar -xf haha.jar

3 把dos指令行裡面的資料存儲在指定檔案夾中的方法

   例子:把C槽目錄下的資訊存儲在1.txt

  C:\myclass>dir>1.txt

------- android教育訓練、java教育訓練、期待與您交流!----------